Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Fabric Apps käyttää TypeScript-koristelijoita määrittelemään tietomalleja, jotka tuottavat tietokantatauluja ja rajapintoja. Määrittelet jokaisen entiteetti luokaksi, joka on koristeltu , @entity()lisäät kenttäkoristelijat tietotyypeille ja kartoitat suhteita entiteettien välillä.
Valtuutus- ja käyttöoikeuksien hallintaohjeita löytyy kohdasta Määrittele dataoikeudet.
Edellytykset
- Fabric Apps -projekti, joka on luotu
npm create @microsoft/rayfin@latest:lla tai alustettunpx rayfin init:llä. - Perusymmärrys TypeScript-luokista ja sisustajista.
Määrittele entiteetti
Tietomallin luomiseksi lisää koristelija @entity() TypeScript-luokkaan. Sitten tuo tarvittavat sisustajat :@microsoft/rayfin-core
import { entity, uuid, text, date } from '@microsoft/rayfin-core';
@entity()
export class Todo {
@uuid() id!: string;
@text() title!: string;
@text({ optional: true }) description?: string;
@date() createdAt!: Date;
@date() updatedAt!: Date;
}
Tämä entiteetti generoi Todo taulukon, jossa on sarakkeet , titleid, description, createdAt, ja updatedAt.
Perusavaimet
Jokainen entiteetti käyttää UUID-kenttää string , joka nimetään id ensisijaisena avaimena. Jos et ilmoita id eksplisiittisesti, Fabric Apps lisää sen skeemaan automaattisesti.
- Kenttä
idon vapaaehtoinen luontitoimintojen aikana—palvelin luo UUID:n, jos sen jätät pois. - Voit antaa oman UUID:n luontivaiheessa, jos haluat asiakaspohjaisia tunnisteita.
- Yhdistetyt pääavaimet ja mukautetut avainnimet eivät ole tuettuja.
@entity()
export class Note {
@uuid() id!: string; // UUID primary key, auto-generated when omitted
@text() title!: string;
@text() content!: string;
}
Tuetut tietotyypit
Käytä näitä sisustajia kenttätyypien määrittämiseen:
| Sisustaja | Tyyppi | Description |
|---|---|---|
@uuid() |
merkkijono | Yksilöllinen tunnistekenttä. |
@text() |
merkkijono | Tekstikenttä, jossa on valinnaisia pituusrajoituksia. |
@int() |
numero | Kokonaislukukenttä. |
@decimal() |
numero | Desimaali- tai numeerinen kenttä. |
@boolean() |
totuusarvo | Tosi tai epätosi kenttä. |
@date() |
Päivämäärä | Päivämäärä- ja aikakenttä, sarjoittaa ISO-merkkijonoista tai Date objekteista. |
@email() |
merkkijono | Tekstikenttä sähköpostivahvistuksella. |
@set() |
merkkijono | Lueteltu joukko merkkijonoliteraaleja. |
Esimerkki useista tyypeistä
import { entity, uuid, text, int, decimal, boolean, date, set } from '@microsoft/rayfin-core';
@entity()
export class Product {
@uuid() id!: string;
@text() name!: string;
@decimal() price!: number;
@int() stockQuantity!: number;
@boolean() isAvailable!: boolean;
@date() createdAt!: Date;
@set('draft', 'published', 'archived') status!: 'draft' | 'published' | 'archived';
}
Tyyppimuunnokset
Lisää kentän sisustajiin modifikaattoreita validoinnin ja rajoitusten konfigurointia varten:
| Muokkaaja | Description |
|---|---|
{ optional: true } |
Salli NULL-arvot. Kentät ovat oletuksena pakollisia. |
{ unique: true } |
Lisää ainutlaatuinen rajoite. |
{ default: value } |
Aseta oletusarvolauseke. |
{ max: n }, { min: n } |
Merkkijonojen pituusrajoitteet (suurin ja minimimäärä merkkejä). |
{ min: n }, { max: n } |
Numeeriset arvorajoitteet. |
Note
TypeScript-valinnainen merkki (? ominaisuuden nimen jälkeen) vaikuttaa vain staattiseen TypeScript-tyyppiin. Se ei tee tietokantasarakkeesta nollattavaa. Tehdäksesi kentän nollattavaksi, lisää { optional: true } koristeluun. Käytetään ! väittämään, että vaadittu kenttä on alustanut kehys.
Esimerkki modifikaattoreista
@entity()
export class User {
@uuid() id!: string;
@email({ unique: true }) email!: string;
@text({ min: 3, max: 50 }) username!: string;
@text({ optional: true, max: 500 }) bio?: string;
@int({ min: 0, max: 150 }) age!: number;
@boolean({ default: false }) isVerified!: boolean;
}
Määrittele suhteet
Käytä @one() ja @many() koristelijoita navigointiominaisuuksien määrittämiseen entiteettien välillä. Fabric Apps generoi automaattisesti vieraat avainsarakkeet, kun määrittelet suhteita.
-
Yksi-moneen – Käytä
@many()sekä vanhempaan että@one()lapseen. -
Moni yhteen – Käytä
@one()lapseen viittaamaan vanhempaan. - Moni-moneen -suhteita ei tueta – käytä sen sijaan eksplisiittistä liittymisentiteettiä.
Esimerkki yksi-moneen -suhteesta
import { entity, uuid, text, date, one, many } from '@microsoft/rayfin-core';
@entity()
export class Notebook {
@uuid() id!: string;
@text() name!: string;
@date() createdAt!: Date;
@many(() => Note) notes?: Note[];
}
@entity()
export class Note {
@uuid() id!: string;
@text() title!: string;
@text() content!: string;
@date() createdAt!: Date;
@text() notebook_id!: string;
@one(() => Notebook) notebook?: Notebook;
}
Kun määrittelet @one(() => Notebook)Note-entiteetteissä, Fabric Apps luo automaattisesti notebook_id vierasavaimen sarakkeen. Ilmoita vierasavain kenttä nimenomaisesti vain, jos aiot lukea tai asettaa sen sovelluskoodiin.
Ulkomaisten sävelten nimeämiskäytäntö
Kun määrittelet vierasavaimen kentän, käytä {property}_id nimeämiskäytäntöä:
@entity()
export class Note {
@uuid() id!: string;
@text() notebook_id!: string; // Foreign key field
@one(() => Notebook) notebook?: Notebook; // Navigation property
}
Mukautettuja vierasavainnimiä (foreignKey, targetKey asetuksia) ei tueta.
Viitejärjestelmän entiteetit
Fabric Apps ei tue @one() -suhteita, jotka viittaavat järjestelmäentiteetteihin, kuten sisäänrakennettuun USER-entiteettiin. Rivin liittämiseksi kirjautuneeseen, lisää tavallinen user_id tyyppikenttä @text() ja täytä se autentiusvaatimuksista (tyypillisesti claims.sub):
@entity()
export class Task {
@uuid() id!: string;
@text() title!: string;
@text() user_id!: string; // System user ID from claims.sub
}
Suodata rivejä user_id roolisi politiikkojen mukaan, jotta käyttäjäkohtainen pääsy voidaan pakottaa.
Rekisteriyksiköt skeemassa
Lisää kaikki entiteettiluokat, rayfin/data/schema.ts jotta asiakas voi generoida GraphQL-välityspalvelimia:
import type { Note } from './Note.js';
import type { Notebook } from './Notebook.js';
export type NotesAppSchema = {
Note: Note;
Notebook: Notebook;
};
Päivitä tämä tyyppi aina, kun luot uuden entiteettiä.
Sovella skeemamuutoksia
Kun olet määritellyt tai muokatut entiteettejä, sovelletaan muutoksia tietokantaan:
Ota päivitetty skeema käyttöön Fabric:iin:
npx rayfin up db applyJos skeeman muutos sisältää tuhoavia operaatioita (sarakkeiden pudottamista, taulukoiden uudelleennimeämistä), komentokeskus varoittaa sinua eikä suostu jatkamaan. Käytä
--forceturvallisuustarkistuksen ohittamiseen:npx rayfin up db apply --force
Note
Käyttäminen --force voi aiheuttaa tietojen menetystä. Käy luetellut toiminnot huolellisesti läpi ennen etenemistä.
Parhaat käytännöt
- Määrittele vierasavainkentät vain, kun sinun täytyy lukea tai asettaa ne koodiin—Fabric Apps generoi ne automaattisesti navigointisisustajilta.
- Käytä suhteellisia tuontejä, joissa
.json päätteitä entiteettitiedostoissa, jotta lähetetty ESM-JavaScript ratkeaa oikein. - Valtuutusmallien ja roolipohjaisen pääsyn osalta katso Määrittele dataoikeudet.
Vianmääritys
Puuttuvat ihmissuhteet
Jos suhteita ei näy API:ssa, varmista että:
- Navigointikoristelu (
@one()tai@many()) on paikalla. - Yritys on rekisteröity .
rayfin/data/schema.ts
Liittyvä sisältö
- Hae tietoja GraphQL:llä
- Määrittele dataoikeudet
Deploy Fabric