Paginación
Las colecciones que paginan llevan un cursor. Síguelo hasta que la API diga que no hay más:
{
"data": [ ... ],
"meta": { "has_more": true, "next_cursor": "eyJpZCI6InByb3BfMWI3N2UwYTRmMiJ9" }
}La única condición de parada correcta
Para cuando has_more sea falso. No cuando una página vuelva más corta que el
límite que pediste, que es el error que casi todo el mundo comete primero: una página
llena puede seguir siendo la última, y una página corta puede seguir llevando un cursor.
Por qué un cursor y no un número de página
Los cursores son estables frente a inserciones. Paginar por desplazamiento sobre un catálogo en el que se está escribiendo se saltará fichas y te enseñará otras dos veces, y lo hará en silencio.
Deja que lo haga el cliente
Todos los clientes de Skautik tienen un iterador que sigue el cursor, así que esto es una línea y no un bucle:
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)
}Además paran si el cursor deja de moverse, así que un fallo por nuestro lado no puede convertirse en un bucle infinito por el tuyo.