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 tarjoaa tyyppiturvallisen GraphQL-asiakasohjelman, jonka avulla voit suorittaa luomis-, luku-, päivitys- ja poistotoimintoja ilman raakakyselyiden kirjoittamista. Asiakas generoi GraphQL:n automaattisesti metodikutsuistasi ja palauttaa tyypitetyt entiteetit datamallin määritelmien perusteella.
Edellytykset
- Fabric Apps -projekti, jossa on määritelty datamallit. Katso Määrittele tietomallit.
- Backend-palvelut toimivat paikallisesti tai Fabric-palveluissa.
Alusta asiakas
Käynnistä RayfinClient backend-URL-osoitteesi, julkaistava avain ja skeematyyppi:
import { RayfinClient } from '@microsoft/rayfin-client';
import type { Note } from '../rayfin/data/Note';
import type { Notebook } from '../rayfin/data/Notebook';
type AppSchema = {
Note: Note;
Notebook: Notebook;
};
const client = new RayfinClient<AppSchema>({
baseUrl: import.meta.env.VITE_RAYFIN_API_URL ?? 'http://localhost:5168',
publishableKey: 'pk-your-project-key',
});
Yleinen tyyppiargumentti mahdollistaa TypeScriptin automaattisen täydennyksen ja tyypintarkistuksen kaikille dataoperaatioille.
Tietojen lukeminen
Pääsy entiteettikokoelmiin kautta client.data.<EntityName>. Fluent API tarjoaa menetelmiä kyselyihin, suodatuksiin, lajitteluun ja sivuttamiseen.
Hae kaikki tiedot
const notes = await client.data.Note.select([
'id',
'title',
'content',
'createdAt',
'isPinned',
]).execute();
Hae yksi tietue ensisijaisen avaimen mukaan
const note = await client.data.Note.findByPk('00000000-0000-0000-0000-000000000000');
Tämä palauttaa koko yksikön tai null jos kyseistä tunnistetta ei ole olemassa.
Suodatintietueet
Käytä menetelmää where() tulosten suodattamiseen:
const pinnedNotes = await client.data.Note.select([
'id',
'title',
'isPinned',
])
.where({ isPinned: { eq: true } })
.execute();
Suodatinoperaattorit
| Operaattori | Description | Esimerkki |
|---|---|---|
eq |
Yhtä suuri kuin | { status: { eq: 'active' } } |
ne |
Ei tasa-arvoisia | { status: { ne: 'archived' } } |
gt |
Suurempi kuin | { age: { gt: 18 } } |
gte |
Suurempi tai yhtä suuri kuin | { age: { gte: 21 } } |
lt |
Pienempi kuin | { price: { lt: 100 } } |
lte |
Pienempi tai yhtä suuri kuin | { price: { lte: 50 } } |
contains |
Sisältää alijonon | { title: { contains: 'draft' } } |
Lajittele tulokset
Käytä orderBy() kyselytulosten lajittelua:
const notes = await client.data.Note.select([
'id',
'title',
'createdAt',
])
.orderBy({ createdAt: 'desc' })
.execute();
Lajittele useiden sarakkeiden mukaan:
const notes = await client.data.Note.select([
'id',
'title',
'isPinned',
'createdAt',
])
.orderBy({ isPinned: 'desc' })
.orderBy({ createdAt: 'desc' })
.execute();
Navigoi ihmissuhteissa
Kun määrittelet suhteita ja @one()@many() koristelijoiden kanssa, voit sisällyttää samaan kyselyyn liittyvät entiteettikentät:
const notes = await client.data.Note.select([
'id',
'title',
'content',
'notebook.id',
'notebook.name',
'notebook.color',
])
.execute();
Jokainen muistiinpano sisältää siihen liittyvän muistikirjan tiedot ilman erillistä kyselyä.
Suuret tulosjoukot paginoi
Käytä kursoripohjaista sivutusta suurissa listoissa:
const page = await client.data.Note.select([
'id',
'title',
'createdAt',
])
.orderBy({ createdAt: 'desc' })
.first(25)
.executePaginated();
console.log('Items:', page.items);
console.log('Has next page:', page.hasNextPage);
console.log('End cursor:', page.endCursor);
Hae seuraava sivu osoittimella:
if (page.hasNextPage) {
const nextPage = await client.data.Note.select([
'id',
'title',
'createdAt',
])
.orderBy({ createdAt: 'desc' })
.first(25)
.after(page.endCursor)
.executePaginated();
}
Note
Ominaisuus totalCount näkyy tyypissä PagedResult , mutta sitä ei täytä taustajärjestelmä. Käytä items.length tuloksia laskemaan nykyiselle sivulle.
Luo tietueita
Käytä menetelmää create() uusien tietueiden lisäämiseen:
const newNote = await client.data.Note.create({
title: 'Meeting notes',
content: 'Discussion points from the team sync',
isPinned: false,
isArchived: false,
createdAt: new Date(),
updatedAt: new Date(),
user_id: 'user-123',
});
Metodi palauttaa luodun olennon kaikkien kenttien täytettyinä, mukaan lukien automaattisesti generoitu id.
Luo tietueita suhteilla
Kun luodaan entiteettejä, joilla on suhteita, välitä joko koko siihen liittyvä olio tai olio, jolla on vain pääavain:
// Option 1: Pass just the ID
const note = await client.data.Note.create({
title: 'Weekly summary',
content: 'Summary of this week',
notebook: { id: 'notebook-456' },
isPinned: false,
isArchived: false,
createdAt: new Date(),
updatedAt: new Date(),
});
// Option 2: Pass the full object
const notebook = await client.data.Notebook.findByPk('notebook-456');
const note = await client.data.Note.create({
title: 'Weekly summary',
content: 'Summary of this week',
notebook: notebook,
isPinned: false,
isArchived: false,
createdAt: new Date(),
updatedAt: new Date(),
});
Molemmat muodot tuottavat saman lopputuloksen. Käytä ensimmäistä lomaketta, kun tiedät jo kyseisen yksikön tunnuksen ja haluat välttää ylimääräisen noudon.
Päivitä tilastot
Käytä menetelmää update() muokkaaaksesi olemassa olevia tietueita. Välitä suodatinobjekti ja objekti, joka sisältää kentät päivitettäväksi:
await client.data.Note.update(
{ id: 'note-123' },
{
title: 'Updated title',
updatedAt: new Date(),
}
);
Päivitä suhteet
Suhteen muuttamiseksi anna uusi liittyvä taho tai pelkkä sen tunnus:
// Move a note to a different notebook
await client.data.Note.update(
{ id: 'note-123' },
{ notebook: { id: 'new-notebook-789' } }
);
Poista tietueet
Käytä delete() menetelmää poistaaksesi tietueet, jotka vastaavat suodatinta:
await client.data.Note.delete({ id: 'note-123' });
Menetelmä ratkeaa, kun taustajärjestelmä vahvistaa poiston. Jos mikään tietue ei vastaa suodatinta, menetelmä onnistuu silti.
Käsittele todennus
Kun todennus on käytössä, kirjaudu sisään ennen datatoimintojen suorittamista:
await client.auth.signIn({ email, password });
// All subsequent data calls include authentication context
const notes = await client.data.Note.select(['id', 'title']).execute();
Asiakas liittää tunnistautumisistunnon automaattisesti kaikkiin data-API-kutsuihin. Sinun ei tarvitse siirtää tokeneita manuaalisesti.
Parhaat käytännöt
- Valitse vain tarvittavat kentät – Hae vain ne kentät, joita käytät hyötykuorman pienentämiseksi ja suorituskyvyn parantamiseksi.
-
Käytä sivuttamista suurissa listoissa – Vältä tuhansien tietueiden hakemista kerralla käyttämällä
first()jaexecutePaginated(). - Eräaikaiset suhdekyselyt – Sisällytä siihen liittyvät entiteettikentät samaan kyselyyn sen sijaan, että tekisit erillisiä pyyntöjä.
- Välimuisti usein käytetty data – Tallenna staattinen viitedata muistiin API-kutsujen vähentämiseksi.
Nykyiset rajoitukset
- Menetelmää
count()ei ole saatavilla sujuvalle asiakkaalle. Valitse minimikentät ja käytäresults.lengthsen sijaan. - Moni-to-monen suhteita ei tueta. Käytä eksplisiittistä liitosyksikköä kahden
@one()navigointisisustelijan kanssa. - Alueella
totalCountoleva kiinteistöPagedResultei ole taustajärjestelmän täyttämä.
Liittyvä sisältö
- Määrittele tietomallit
- Todentamisen määrittäminen
Deploy Fabric