【问题标题】:If findbyidanddelete() finds no users the catch block should be executed?如果 findbyidanddelete() 没有找到用户,应该执行 catch 块吗?
【发布时间】:2020-08-17 01:36:36
【问题描述】:

Code Image

所以我正在阅读这个 nodejs PDF 指南,我发现了这个。

为什么会有 if(!user) 条件 如果找不到用户,执行将跳转到 catch 块,所以我真的无法理解该语句何时执行。

如果有人可以向我解释这将非常有帮助。

【问题讨论】:

  • 请将您的代码添加到帖子中。
  • 你有没有调试过代码看它是否去catch block?

标签: javascript node.js mongodb promise


【解决方案1】:

没有User.findByIdAndDelete的实现很难说。

但也许如果请求中没有id参数(即req.params.idundefined),代码会抛出错误,落在catch语句上(无论如何可能对用户至少拥有 e.message 或 e.name(如果存在)...

但这纯粹是猜测:)


编辑

我在github找到了mongoose的源码!

函数Model.findByIdAndDelete 可以抛出TypeError 如果arguments.length === 1 && typeof id === 'function'

我找到了here

【讨论】:

  • findByIdAndDeltete 由 moongoose 提供,但我无法从文档中弄清楚
  • 如果您想查看实现,请尝试使用强制转换为字符串:User.findByIdAndDelete.toString() 甚至是 User.findByIdAndDelete + ""
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 2011-05-01
  • 1970-01-01
相关资源
最近更新 更多