使用过滤器同时查找和计数文档的正确方法是什么?
我的过滤器属性是通过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);
}
});
});
我知道我的错误可能太明显了,但是如果有人可以告诉我做错了什么,我会很高兴。
答案 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