仅在返回值时运行Mongoose查询

时间:2018-09-27 19:11:20

标签: javascript node.js mongoose

我正在尝试运行findByIdAndRemove查询。

该程序始终走成功之路,我不知道为什么!

如果数据库中没有记录,我希望它采用response.status(500).send(errorMessage)路径。

async function deleteUser(request, response) {
  try {
    await User.findByIdAndRemove(request.params.id);
  } catch (error) {
    response.status(500).send(errorMessage);
  }
  response.status(200).send(successMessage);
}

谢谢。

3 个答案:

答案 0 :(得分:0)

为什么不尝试这个?

User.deleteOne({_id: req.params.id}, function(err){

});

答案 1 :(得分:0)

您应检查strict option。这将{{1}中的override中的strict mode(如果有)。如果将model设置为strict,它将为produce an error

类似的东西:

throw

答案 2 :(得分:0)

除非执行查询时出错,否则不会调用您的catch块。

如果findByIdAndRemove找不到文档,您不会收到错误消息。

但是,如果发现猫鼬,它将返回已删除的文档。如果找不到 文档,它将解析为空。

因此您可以测试返回的用户是否存在,然后引发错误以触发catch块:

async function deleteUser(request, response) {
  try {
    const user = await User.findByIdAndRemove(request.params.id);

    if (!user) {
      throw 'User not found'
    }
  } catch (error) {
    response.status(500).send(errorMessage);
  }

  response.status(200).send(successMessage);
}