我试图获得使用api调用的产品计数,但在postman中它保持加载
router.get(`/get/count`, async (req, res) => {
const productCount = await Product.countDocuments((count)=>count)
if (!productCount) {
res.status(500).json({ success: false });
}
res.send({
productCount: productCount
});
});
(node:28030) UnhandledPromiseRejectionWarning: MongooseError: Query was already executed: Product.countDocuments({})
没有异步和等待也不工作
我试图捕捉错误,我得到了这个错误在postman
{
"success": false,
"error": "Query was already executed: Product.countDocuments({})"
}
捕获错误代码:
router.get(`/get/count`, (req, res) => {
Product.countDocuments((count)=>count).then((pcount)=>{
if(pcount){
return res.status(200).json({success:true})
}else{
return res.status(404).json({success:false})
}
}).catch((err)=>{
return res.status(400).json({success:false, error:err.message})
})
});
5条答案
按热度按时间yqlxgs2m1#
我 * 认为 * 在Mongoose操作中,您希望或者
await
或者提供回调,而不是两者都提供。尝试两者都提供会导致在内部执行查询两次。请尝试:
de90aj5v2#
如果要计算产品集合中的所有产品,请尝试以下操作
xzlaal3s3#
v8wbuo2f4#
"有两种方法"
试试看,你不需要使用回调(count)=〉count
b5lpy0ml5#
您不需要包含
((count)=>count)
。请改用
Product.countDocuments()