Мне удалось заставить все это работать, если я вставил промежуточное программное обеспечение в маршрут следующим образом:
router.get('/', paginatedResults(Flight), (req, res) => {
res.json(res.paginatedResults);
});
, но я хотел бы использовать функцию промежуточного программного обеспечения в моем контроллере, которая будет передана в Маршрутизатор вроде
контроллер. js
// @desc Get all flights
// @route GET /api/v1/flights
// @access Public
exports.getFlights = paginatedResults(Flight), (req, res) => {
res.json(res.paginatedResults)
};
маршрутизатор. js
router.route('/').get(getFlights);
paginatedResults. js
exports.paginatedResults = (model) => {
return 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 model.countDocuments().exec())) {
results.next = {
page: page + 1,
limit: limit,
};
}
if (startIndex > 0) {
results.previous = {
page: page - 1,
limit: limit,
};
}
try {
results.results = await model
.find()
.limit(limit)
.skip(startIndex)
.exec();
res.paginatedResults = results;
next();
} catch (e) {
res.status(500).json({ msg: e.message });
}
};
};
Где в функции контроллера я должен поместить промежуточное программное обеспечение paginatedResults ()? Или это должно идти в роутере?
Спасибо!