Estoy tratando de crear esta paginación simple de nodejs con express y funciona bien para todas las páginas excepto la primera página. Cuando obtengo la página 1, sigue cargando sin ningún resultado y no sé cuál es el problema. Incluso los tutoriales de YouTube están escribiendo exactamente el mismo código. Cualquier ayuda es apreciada
exports.paginatedResults = (model) => { return async (req, res, next) => { const page = parseInt(req.query.page) || 1; const limit = req.query.limit * 1 || 100; const startIndex = (page - 1) * limit; const endIndex = page * limit; const results = {}; if (endIndex < await model.countDocuments().exec()) { results.next = { page: page + 1, limit: limit, } } if (startIndex > 0) { results.previous = { page: page - 1, limit: limit, } results.results = await model.find().limit(limit).skip(startIndex).exec(); res.paginatedResults = results; next(); } } }ha escrito model.find en el bloque if que no se ejecutaría para la primera página, ya que startIndex sería 0 en ese caso. también ha escrito next() dentro de ese bloque if, por lo que en el caso de la primera página no se llamaría, por eso la página está en estado de carga.
intenta así
exports.paginatedResults = (model) => { return async (req, res, next) => { const page = parseInt(req.query.page) || 1; const limit = req.query.limit * 1 || 100; const startIndex = (page - 1) * limit; const endIndex = page * limit; const results = {}; if (endIndex < await model.countDocuments().exec()) { results.next = { page: page + 1, limit: limit, } } if (startIndex > 0) { results.previous = { page: page - 1, limit: limit, } } results.results = await model.find().skip(startIndex).limit(limit).exec(); res.paginatedResults = results; next(); } }también debe usar omitir primero y luego agregar límite.