wen*_*ian 4 mongoose mongodb node.js mongodb-query
我还没有找到如何返回结果集中包含的总数据的方法。有什么办法可以返回总数据?我需要确认是否返回了正确的JSON数据。
total: 40,
page: 1,
pageSize: 3,
books: [
{
_id: 1,
title: "?·???? ",
author: "[?] ?·??",
},
{
_id: 2,
title: "???????",
author: "???",
},
{
_id: 3,
title: "???",
author: "[?] ???",
}
]
}
Run Code Online (Sandbox Code Playgroud)
router.get('/booksquery', (req, res) => {
var page = parseInt(req.query.page) || 1;
var limit = parseInt(req.query.limit) || 3;
Book.find({})
.sort({ update_at: -1 })
.skip((page-1) * limit)
.limit(limit)
.exec((err, doc) => {
if (err) {
res.json(err)
} else {
res.json({
total: doc.total,
page: page,
pageSize: limit,
books:doc,
});
}
})
})
Run Code Online (Sandbox Code Playgroud)
可能您可以执行以下操作:
仅当当前页面索引默认为0并且分页从下一页开始(即1)时,您才可以执行.skip(page * limit)确保.skip()和.limit()获得Number。
router.get("/booksquery", (req, res) => {
var page = parseInt(req.query.page) || 0; //for next page pass 1 here
var limit = parseInt(req.query.limit) || 3;
var query = {};
Book.find(query)
.sort({ update_at: -1 })
.skip(page * limit) //Notice here
.limit(limit)
.exec((err, doc) => {
if (err) {
return res.json(err);
}
Book.countDocuments(query).exec((count_error, count) => {
if (err) {
return res.json(count_error);
}
return res.json({
total: count,
page: page,
pageSize: doc.length,
books: doc
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
从上方您将收到如下响应:
{
books: [
{
_id: 1,
title: "?·???? ",
author: "[?] ?·??"
},
{
_id: 2,
title: "???????",
author: "???"
},
{
_id: 3,
title: "???",
author: "[?] ???"
}
],
total: 3,
page: 0,
pageSize: 3
}
Run Code Online (Sandbox Code Playgroud)
如果您使用任何条件,并且想要在该条件之上进行查询并获得结果和总计。在里面做var query ={}。并且相同的查询也将用于.count()。因此您可以total 依靠该条件的基础知识。
| 归档时间: |
|
| 查看次数: |
3628 次 |
| 最近记录: |