问题描述
分页无法正常工作,当我在填充产品类别的同时编写限制和跳过选项时,它对填充的产品工作正常,但是当我填充所有产品时,所有产品都出现在第 1 页,然后当我write limit & skip outside populate 它适用于所有产品,但不适用于按类别填充的产品。我的意思是说,在内部写入时,它适用于 populate 但不适用于所有产品,而在外部写入时它不适用于 populate 但不适用于所有产品。
exports.getAllProducts = asyncHandler(async (req,res) => {
let sortBy = req.query.sortBy ? req.query.sortBy : "price";
let sortByOrder = req.query.sortByOrder ? req.query.sortByOrder : "1";
const categoryName = req.query.categoryName ? req.query.categoryName : "";
const page = Number(req.query.pageNumber) || 1;
const pageSize = 4;
const keyword = req.query.keyword
? {
$or: [
{ name: { $regex: req.query.keyword,$options: "i" } },{ description: { $regex: req.query.keyword,],}
: {};
var count = await Product.countDocuments({ ...keyword });
Product.find({ ...keyword })
.select("-photo")
.populate({
path: "category",match: {
name: categoryName,},options: {
limit: pageSize,skip: pageSize * (page - 1),})
.sort([[sortBy,sortByOrder]])
// .limit(pageSize)
// .skip(pageSize * (page - 1))
.exec(function (
err,products,page = Number(req.query.pageNumber) || 1,pages
) {
products = products.filter(function (product) {
return product.category;
});
if (err) {
return res.status(400).json({
error: "NO Product FOUND!",});
}
console.log(products.length);
res.json({
products,page,pages: Math.ceil(count / pageSize),});
});
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)