Vee*_*ban 1 javascript node.js postman
我正在尝试使用 api 调用获取产品数量,但在邮递员中它不断加载
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({})
Run Code Online (Sandbox Code Playgroud)
没有 async 和 wait 也不起作用
我尝试捕获错误,但在邮递员中收到此错误
{
"success": false,
"error": "Query was already executed: Product.countDocuments({})"
}
Run Code Online (Sandbox Code Playgroud)
捕获错误的代码:
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})
})
});
Run Code Online (Sandbox Code Playgroud)
我认为在 Mongoose 操作中,您想要要么提供回调 await ,要么提供回调,但不能同时提供两者。尝试同时执行这两项操作会导致它在内部执行查询两次。
尝试一下:
const productCount = await Product.countDocuments();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1915 次 |
| 最近记录: |