Mi función de paginación devuelve los documentos correctamente en la consola, pero no los pasa correctamente al cliente. Tengo la función de paginar configurada como un middleware a continuación:
module.exports.paginatedResults = async (req, res, next) => { const page = parseInt(req.query.page); const limit = parseInt(req.query.limit); const startIndex = (page - 1) * limit; const endIndex = page * limit; const results = {} if(endIndex < await Event.countDocuments().exec()) { results.next = { page: page + 1, limit: limit } } if(startIndex > 0) { results.previous = { page: page - 1, limit: limit } } results.results = await Event.find().limit(limit).skip(startIndex).exec() res.paginatedResults = results; console.log(results); }Luego paso los resultados a mi controlador de ruta usando lo siguiente:
const { paginatedResults } = require('../middleware'); router.route('/') .get(paginatedResults, catchAsync (events.index))Y luego me gustaría mostrarlo en mi página de índice de eventos con la siguiente función:
module.exports.index = async (req, res) => { res.render('events/index', { paginatedResults }) }; Cuando accedo a la ruta http://localhost:3000/events?page=3&limit=2 , los documentos adecuados se registran en mi terminal (debido a la consola.log en mi función de middleware paginateResults) pero el navegador gira y se agota el tiempo.
Sé que mi flujo de datos se está descomponiendo en alguna parte porque los results no se envían al cliente, pero ¿dónde?