countDocuments() 在 api 调用中不起作用

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)

Dav*_*vid 6

认为在 Mongoose 操作中,您想要要么提供回调 await 要么提供回调,但不能同时提供两者。尝试同时执行这两项操作会导致它在内部执行查询两次。

尝试一下:

const productCount = await Product.countDocuments();
Run Code Online (Sandbox Code Playgroud)