处理asyncHandler包中的消息错误

问题描述 投票:0回答:1

我正在尝试测试我的 Api 更新,当更新不存在时任务返回此响应

{     
 "msg": "Task Updated Successfully", 
 "data": null 
}

删除任务控制器

const deleteTask = asyncHandler(async (req, res) => {
    const tasks = await taskModel.findByIdAndDelete(req.params.id);
    res.status(200).json({ msg: "A Task Deleted Successfully", data: "" });
});

错误处理中间件

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Internal Server Error');
});

如果任务不存在,如何处理消息以发送 anthor 消息

node.js express mongoose
1个回答
0
投票

如果没有找到匹配的文档,

findByIdAndDelete()
将返回
null
,因此可以检查是否不是
null
,如下所示:

const deleteTask = asyncHandler(async (req, res) => {
   const tasks = await taskModel.findByIdAndDelete(req.params.id);
   if(!tasks){ //< tasks will be null if no matching document
      return res.status(200).json({ //< early return
         msg: 'No document found'
      });
   }
   res.status(200).json({ msg: "A Task Deleted Successfully", data: "" });
});

或者你可以使用

orFail()
方法,如下所示:

const deleteTask = asyncHandler(async (req, res) => {
   const tasks = await taskModel.findByIdAndDelete(req.params.id).orFail(() =>{
      return res.status(200).json({ //< early return
         msg: 'No document found'
      });
   })
   res.status(200).json({ msg: "A Task Deleted Successfully", data: "" });
});
© www.soinside.com 2019 - 2024. All rights reserved.