猫鼬:如何同时查找和计数文档

时间:2020-09-14 10:11:43

标签: node.js mongoose

使用过滤器同时查找和计数文档的正确方法是什么?

我的过滤器属性是通过req.params.email传递的电子邮件,如下所示:

exports.getTotalInventory =  asyncHandler(async (req, res, next) => {
email= req.params.email
  Inventory.countDocuments({email:email},(err, inventory)=>{
  if(err){
  res.status(500);
  res.send(err);
  } else {
  res.json(inventory);
  }
  });
  });

我知道我的错误可能太明显了,但是如果有人可以告诉我做错了什么,我会很高兴。

2 个答案:

答案 0 :(得分:1)

如果要查找文档并进行处理,只需使用Inventory.find并使用.length属性即可获取项目计数。

Inventory.find({email:email}, (err, inventory) => {
  if(err){
     res.status(500);
     res.send(err);
  } else {
     res.json({items: inventory, count: inventory.length});
  }
});

答案 1 :(得分:1)

countDocuments将计算您的整个库存收藏。

const doc = Inventory.find({email:email});
const count = Inventory.countDocuments({email:email});// closing parenthesis
const response = await Promise.all([doc, count]);
res.json({items: response[0], count: response[1]});

或者如果您想基于找到的文档进行计数:

const response = await Inventory.find({email:email};
res.json({items: response, count: response.length});// length
相关问题