说明:
1、分页实现使用了Mongodb的query.skip().limit().where() 这三个方法,然后利用query.exec()。
2、计算分页条件。 从前台拿到的page默认是从1开始的,所以计算Skip的参数为(page-1)*rows。
server.js文件
app.post('/users', async (req, res) => {
var query = Customer.find({});
var count = 0;
var page = req.body.page;
var rows = req.body.rows;
// var stuname=req.body.username;
// if(stuname){
// query.where('name',stuname);
// }
// 当前页显示的数据所有数据-前几页显示的数据
query.skip((page - 1) * rows);
query.limit(rows);
query.exec(function (err, rs) {
if (err) {
res.send(err);
} else {
//计算数据总数
Customer.find(function (err, result) {
jsonArray = {
rows: rs,
total: result.length
};
res.send(jsonArray);
});
}
});
})
使用postman进行测试,
如果要筛选对应的字段。可以在server.js中将注释部分打开结果如下:
根据价格进行排序分页的get请求
app.get('/goodslist', function (req, res, next) {
// 分页
let page =parseInt(req.query.page);
let row =parseInt(req.query.row);
let skip=(page-1)*row
// 条件
let para={}
let goodsmodel=Goods.find(para).skip(skip).limit(row);
// 按照价格排序 1 ↑ -1↓
let sort =req.query.sort;
goodsmodel.sort({'salePrice':sort})
goodsmodel.exec({}, function (err, doc) {
if (err) {
res.json({
status: "1",
msg: err.message
})
} else {
res.json({
status: "1",
msg: '',
result: {
count: doc.length,
list:doc
}
})
}
})
})