Paging
Sammlungen, die geblättert werden, tragen einen Cursor. Folgen Sie ihm, bis die API sagt, dass nichts mehr kommt:
{
"data": [ ... ],
"meta": { "has_more": true, "next_cursor": "eyJpZCI6InByb3BfMWI3N2UwYTRmMiJ9" }
}Die einzige richtige Abbruchbedingung
Halten Sie an, wenn has_more false ist. Nicht, wenn eine Seite kürzer
zurückkommt als das angeforderte Limit, was fast jeder zuerst falsch macht: Eine
volle Seite kann trotzdem die letzte sein, und eine kurze Seite kann trotzdem
einen Cursor tragen.
Warum ein Cursor und keine Seitenzahl
Cursor sind über Einfügungen hinweg stabil. Wer über Offsets durch einen Bestand blättert, in den gerade geschrieben wird, überspringt Datensätze und bekommt andere zweimal, und zwar unauffällig.
Lassen Sie den Client das machen
Jeder Skautik-Client hat einen Iterator, der dem Cursor folgt, das ist also eine Zeile statt einer Schleife:
for await (const property of skautik.properties.listAll({ city: "Berlin" })) {
console.log(property.title);
}for property in skautik.properties.list_all(city="Berlin"):
print(property.title)for property, err := range skautik.AllProperties(
client.Properties.ListProperties(ctx).City("Berlin"),
) {
if err != nil {
return err
}
fmt.Println(property.Title)
}Sie halten außerdem an, wenn sich der Cursor nicht mehr bewegt, ein Fehler auf unserer Seite kann bei Ihnen also nicht zu einer Schleife werden, die nie endet.