我还没有找到如何返回结果集中包含的总数据的方法。有什么办法可以返回总数据?我需要确认是否返回了正确的JSON数据。
total: 40, page: 1, pageSize: 3, books: [ { _id: 1, title: "?·???? ", author: "[?] ?·??", }, { _id: 2, title: "???????", author: "???", }, { _id: 3, title: "???", author: "[?] ???", } ] }
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, }); } }) })
Saikat Chakr.. 8
可能您可以执行以下操作:
仅当当前页面索引默认为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 }); }); }); });
从上方您将收到如下响应:
{ books: [ { _id: 1, title: "?·???? ", author: "[?] ?·??" }, { _id: 2, title: "???????", author: "???" }, { _id: 3, title: "???", author: "[?] ???" } ], total: 3, page: 0, pageSize: 3 }
如果您使用任何条件,并且想要在该条件之上进行查询并获得结果和总计。在里面做var query ={}
。并且相同的查询也将用于.count()
。因此您可以total
依靠该条件的基础知识。
可能您可以执行以下操作:
仅当当前页面索引默认为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 }); }); }); });
从上方您将收到如下响应:
{ books: [ { _id: 1, title: "?·???? ", author: "[?] ?·??" }, { _id: 2, title: "???????", author: "???" }, { _id: 3, title: "???", author: "[?] ???" } ], total: 3, page: 0, pageSize: 3 }
如果您使用任何条件,并且想要在该条件之上进行查询并获得结果和总计。在里面做var query ={}
。并且相同的查询也将用于.count()
。因此您可以total
依靠该条件的基础知识。