我是 Node 和 Express 的新手。我目前正在向我的 API 添加分頁功能。到目前為止,大部分艱苦的作業都完成了,但我無法讓它作業,因為我已經重構并使分頁成為一個功能。
這是我的路線:
const projects = require('../controllers/project.controller');
module.exports = (app) => {
var router = require('express').Router();
// Retrieve all project
router.get('/', projects.findAll);
};
這是中間件:
const paginatedResults = (model) => {
return (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 < model.length) {
results.next = {
page: page 1,
limit: limit,
};
}
if (startIndex > 0) {
results.previous = {
page: page - 1,
limit: limit,
};
}
results.results = model.slice(startIndex, endIndex);
res.paginatedResults = results;
next();
};
};
const pagination = {
paginatedResults,
};
module.exports = pagination;
這是我的控制器:
exports.findAll = (req, res) => {
Project.find({}, (err, data) => {
res.send(data);
});
};
我只是想知道我應該在函式中更改什么?理想情況下,我希望能夠在路線中使用(例如router.get('/', [pagination.paginatedResults(Projects), projects.findAll]))
uj5u.com熱心網友回復:
中間件一個接一個地作業。當您沒有要分頁的結果時,您會嘗試分頁。如果你對使用輔助函式沒問題,試試這樣的。
//route
const projects = require('../controllers/project.controller');
module.exports = (app) => {
var router = require('express').Router();
// Retrieve all project
router.get('/', projects.findAll);
};
// controller
exports.findAll = (req, res) => {
const mongoQuery = Project.find();
const result = await paginateQuery(mongoQuery, req.query.page, req.query.limit);
res.send(result)
};
// helper
const paginateQuery =async (mongoQuery, page, limit) => {
const skip = page-1
const results =await mongoQuery.skip(skip).limit(limt)
// transform results the way you want and/or build response object
return results
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497632.html
標籤:javascript 节点.js 表示 猫鼬 分页
上一篇:隱藏虛擬種群貓鼬的領域
下一篇:c++中智能指標的使用,個人總結
