填充时 MongoDb/Node.js 中的分页问题

问题描述

分页无法正常工作,当我在填充产品类别的同时编写限制和跳过选项时,它对填充的产品工作正常,但是当我填充所有产品时,所有产品都出现在第 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...