希望你们能帮我一把。
我无法使分页正常工作。它总是对文档总数进行计数,并忽略筛选数据。例如,总共有24个文档,但是当按特定项进行筛选时,它返回一个文档,但仍然返回总页数(正如我将pageSize设置为9一样)。
请在下面找到我的代码:
router.get('/', async (req, res) => {
try {
const pageSize = 9;
const page = Number(req.query.page) || 1;
let query;
const queryObject = { ...req.query };
const excludeFields = ['page', 'sort', 'limit', 'fields'];
excludeFields.forEach((el) => delete queryObject[el]);
let queryString = JSON.stringify(queryObject);
queryString = queryString.replace(
/\b(gte|gt|lte|lt)\b/g,
(match) => `$${match}`
);
query = Vehicle.find(JSON.parse(queryString));
if (req.query.sort) {
const sortBy = req.query.sort.split(',').join(' ');
query = query.sort(sortBy);
} else {
query = query.sort('-createdAt');
}
const count = await Vehicle.countDocuments();
const vehicles = await Vehicle.find(JSON.parse(queryString))
.limit(pageSize)
.skip(pageSize * (page - 1));
if (!vehicles) {
return res.status(200).json({ success: true, data: [] });
}
res
.status(200)
.json({ vehicles, page, totalPages: Math.ceil(count / pageSize) });
} catch (error) {
console.error(error.message);
res.status(500).send('Server Error');
}
});你会怎么去添加功能排序到这个也请,由于某种原因排序不工作,对我呢?
非常感谢,G。
发布于 2022-08-24 21:38:19
获取包含countDocuments:中添加查询参数所需的筛选数据的计数的
const count = await Vehicle.countDocuments(JSON.parse(queryString));
const vehicles = await Vehicle.find(JSON.parse(queryString))
.limit(pageSize)
.skip(pageSize * (page - 1))
.sort(<your sort query>)
https://www.mongodb.com/community/forums/t/sorting-with-mongoose-and-mongodb/122573
https://stackoverflow.com/questions/73479566
复制相似问题