Dy strategji: e bazuar në offset (limit/offset) dhe e bazuar në cursor. GraphQL s'ka pagination të integruar, por standardi i komunitetit është specifikimi Relay Connection, që formalizon pagination-in me cursor.
Dy strategji: e bazuar në offset (limit/offset) dhe e bazuar në cursor. GraphQL s'ka pagination të integruar, por standardi i komunitetit është specifikimi Relay Connection, që formalizon pagination-in me cursor.
items(limit: 10, offset: 20)) është i thjeshtë por prishet me të dhëna live: nëse futet një rresht ndërsa përdoruesi kalon faqet, elementet zhvendosen dhe shihni dublikime ose boshllëqe. Bëhet edhe i ngadaltë në offset-e të thella (DB-ja prapë skanon rreshtat e anashkaluar).Një connection e mbështjell listën në edges (secili me një cursor dhe një node) plus pageInfo:
type Query {
posts(first: Int!, after: String): PostConnection! # first = madhësia e faqes, after = cursor
}
type PostConnection {
edges: [PostEdge!]!
pageInfo: PageInfo!
}
type PostEdge {
cursor: String! # token opak për pozicionin e KËTIJ node-i
node: Post! # elementi aktual
}
type PageInfo {
endCursor: String # ktheje këtë si 'after' për faqen tjetër
hasNextPage: Boolean! # që klienti të dijë kur të ndalojë
}
// resolver: merr NJË rresht ekstra për të llogaritur hasNextPage lirë
const rows = await db.posts.find({ after: args.after, limit: args.first + 1 });
const hasNextPage = rows.length > args.first;
const page = rows.slice(0, args.first);
return {
edges: page.map((p) => ({ node: p, cursor: encodeCursor(p.id) })),
pageInfo: { endCursor: page.at(-1) && encodeCursor(page.at(-1).id), hasNextPage },
};
Cursor-i është opak — zakonisht një base64 i çelësit të renditjes — kështu që klientët e trajtojnë si token, jo si numër.
Zgjedhja offset kundrejt cursor tregon se kuptoni konsistencën nën shkrime konkurrente dhe performancën në faqe të thella. Njohja e formës Relay connection ka rëndësi sepse klientët Apollo/Relay kanë trajtim cache të integruar për të.
Një bibliotekë pyetjesh intervistash IT me përgjigje të detajuara — nga Junior te Senior.
Dhuro