La paginación es una parte muy importante para poder segmentar los resultados cuando tengamos una entidad que tenga una gran cantidad de registros, esto con el fin de que el manejo de esos datos sea más sencillo por parte de la aplicación del cliente y esto a su vez da mejor experiencia de usuario.
https://developer.atlassian.com/server/confluence/pagination-in-the-rest-api/
La estructura de la respuesta sería de la siguiente manera:
{
"_links": {
"base": "<http://localhost:8080/directors>",
"next": "/page?limit=5&start=5",
"self": "<http://localhost:8080/directors/page>"
},
"limit": 5,
"size": 5,
"start": 0
"results": [
{
"id": "98308",
"status": "current",
"title": "What is Confluence? (step 1 of 9)",
"type": "page"
},
{
"id": "98309",
"status": "current",
"title": "A quick look at the editor (step 2 of 9)",
"type": "page"
},
{
"id": "98306",
"status": "current",
"title": "Get serious with a table (step 5 of 9)",
"type": "page"
},
{
"id": "98307",
"status": "current",
"title": "Welcome to Confluence",
"type": "page"
},
{
"id": "98305",
"status": "current",
"title": "Share your page with a team member (step 9 of 9)",
"type": "page"
}
]
}
await Directors.findAndCountAll({
where: {...},
order: [...],
limit: 5,
offset: 0,
})
offset = (page - 1) * limit
offset = (page * limit) - limit
Pagina 3 = 3 * 10 + 1 = 31
Pagina 1 = 1 * 10 + 1 = 11