我正在尝试运行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);
}
谢谢。
答案 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);
}