use*_*989 2 mongoose mongodb node.js
我看过 2 个不同的例子,想知道哪个是“正确的”,或者它是否没有太大区别。示例 1 在 try 内部发送响应,示例 2 在 try 块外部发送。
示例 1:
try {
await food.save();
res.status(201).send(food);
} catch (err) {
res.status(500).send(err);
}
Run Code Online (Sandbox Code Playgroud)
示例 2:
try {
await food.save();
} catch (err) {
res.status(500).send(err);
}
res.status(201).send(food);
Run Code Online (Sandbox Code Playgroud)
在第一个例子中,如果await food.save();抛出一个错误,那么它下面的代码将不会执行并且执行将移动到catch块。客户端将收到状态代码为 的响应500。
在第二个示例中,如果await food.save();失败,则catch块将执行,服务器将向客户端发送状态代码为 的响应500,然后最后一条语句也将执行,这可能不是您想要的。您还会收到一个错误,即一旦发送标头就无法重新发送标头。这是因为您的代码将尝试将响应发送给客户端两次。
您应该使用第一个示例,因为您只想在文档成功保存在数据库中时发送成功响应。
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |