De fleste spørringer som returnerer mer enn ett element (en array) bruker paginering, altså retur av delsett av dataene. Vi benytter standard GraphQL-støtte for paginering.
Et endepunkt som støtter paginering har en returtype som slutter med Connection
. Endepunkter som støtter paginering kan ta inn fire ekstra valgfrie argumenter: first
, last
, before
og after
. Argumentene first
og last
benyttes for å bestemme antall elementer som skal returneres, for eksempel saleInvoices(first: 5)
vil returnere kun de første 5 fakturaene. Om du ikke oppgir noen first: så er det 100 elementer som vil bli returnert. Det er ikke mulig å spørre om mer enn 100 av gangen heller. Argumentene before
og after
er en offset som tar en peker (cursor) som input. Se eksemplene nedenfor for forklaring hvordan du finner og bruker denne.
I følgende spørring henter vi første 5 fakturaer, og vi spør om feltene nodes
, edges
og pageInfo
.
POST /api/v1/graphql
query {
saleInvoices(first: 5) {
nodes {
id invoiceNumber # Felter som returneres for hver node
}
edges { # En liste av noder og en peker til noden
cursor # Peker til denne noden
node { id } # Node med felter som skal returneres
}
pageInfo { # Informasjon om det er flere sider med peker til start og slutt på gjeldende side
hasPreviousPage # Om det er flere resultater før denne siden
hasNextPage # Om det er flere resultater etter denne siden
startCursor # Peker til noden på starten av denne siden
endCursor # Peker til noden på slutten av denne siden
}
}
}
JSON Resultat
{
"data": {
"saleInvoices": {
"nodes": [
{
"id": "QWzh2B",
"invoiceNumber": 1005
},
{
"id": "GbmhNQ",
"invoiceNumber": 1004
}
],
"edges": [
{
"cursor": "MQ",
"node": {
"id": "QWzh2B"
}
},
{
"cursor": "Mg",
"node": {
"id": "GbmhNQ"
}
}
],
"pageInfo": {
"hasPreviousPage": false,
"hasNextPage": true,
"startCursor": "MQ",
"endCursor": "Mg"
}
}
}
}
Som vist i spørringen over får vi 5 resultater per side og om vi ønsker å laste neste side kan vi gjenta spørringen med en endring:
# Her bruker vi 'endCursor' fra forrige spørring og bruker argumentet 'after' for å hente resultater etter noden med peker 'Mg'
query {
saleInvoices(first: 5, after: "Mg") {
nodes {
id invoiceNumber
}
edges {
cursor
node { id }
}
pageInfo {
hasPreviousPage
hasNextPage
startCursor
endCursor
}
}
}
Enkelt, rimelig og bekymringsfritt regnskap for små bedrifter.
For kun 99,-/måned kan du fakturere dine kunder, holde regnskapet under kontroll, og rapportere det staten skal ha.
Prøv gratis i 30 dagerRelaterte artikler