如何在节点 js 和 mongodb 中添加包含所有页面详细信息的分页
How to add pagination with all page details in node js and mongodb
嗨,我必须在 NodeJS 中添加分页,MongoDB我已经完成了这段代码
router.get("/PO_pagination", verify, async (req, res) => {
console.log("req.query", req.query)
try {
let { page, size } = req.query
if (!page) {
page = 1
}
if (!size) {
size = 10
}
const limit = parseInt(size)
const skip = (page - 1) * size
const po = await PurchaseOrders.find().limit(limit).skip(skip)
return res.send({
page: page,
size: size,
data: po
})
} catch (error) {
console.log("error", error)
return res.status(400).json({ error: error })
}
})
我正在根据req.query
获取数据,但我也想return根据限制获取总页数并跳过从查询中获取
就像我说 page=1&limit=200
一样,它会根据查询参数安排总页数。
另外,我想在 res
中添加 next
和 prev
。比如下一页多少页,上一页多少页
您可以使用countDocuments()
获取文档总数,然后您可以计算您请求的数据。
router.get("/PO_pagination", verify, async (req, res) => {
console.log("req.query", req.query)
try {
let { page, size } = req.query
if (!page) page = 1;
if (!size) size = 10;
const limit = parseInt(size)
const skip = (page - 1) * size
const po = await PurchaseOrders.find().limit(limit).skip(skip);
const total_documents = await PurchaseOrders.countDocuments();
const previous_pages = page - 1;
const next_pages = Math.ceil((total_documents-skip)/size);
return res.send({
page: page,
size: size,
data: po,
previous: previous_pages,
next: next_pages
})
} catch (error) {
console.log("error", error)
return res.status(400).json({ error: error })
}
})
嗨,我必须在 NodeJS 中添加分页,MongoDB我已经完成了这段代码
router.get("/PO_pagination", verify, async (req, res) => {
console.log("req.query", req.query)
try {
let { page, size } = req.query
if (!page) {
page = 1
}
if (!size) {
size = 10
}
const limit = parseInt(size)
const skip = (page - 1) * size
const po = await PurchaseOrders.find().limit(limit).skip(skip)
return res.send({
page: page,
size: size,
data: po
})
} catch (error) {
console.log("error", error)
return res.status(400).json({ error: error })
}
})
我正在根据req.query
获取数据,但我也想return根据限制获取总页数并跳过从查询中获取
就像我说 page=1&limit=200
一样,它会根据查询参数安排总页数。
另外,我想在 res
中添加 next
和 prev
。比如下一页多少页,上一页多少页
您可以使用countDocuments()
获取文档总数,然后您可以计算您请求的数据。
router.get("/PO_pagination", verify, async (req, res) => {
console.log("req.query", req.query)
try {
let { page, size } = req.query
if (!page) page = 1;
if (!size) size = 10;
const limit = parseInt(size)
const skip = (page - 1) * size
const po = await PurchaseOrders.find().limit(limit).skip(skip);
const total_documents = await PurchaseOrders.countDocuments();
const previous_pages = page - 1;
const next_pages = Math.ceil((total_documents-skip)/size);
return res.send({
page: page,
size: size,
data: po,
previous: previous_pages,
next: next_pages
})
} catch (error) {
console.log("error", error)
return res.status(400).json({ error: error })
}
})