[英]Proper error handling in mongoose query.exec()
我已經深入研究了Mongoose文檔,但我仍然無法找到我應該如何處理query.exec()
錯誤的信息。
var query = User.findOne({_id: userId});
var promise = query.exec(function(err) {
if (err) {
res.json(err);
return;
}
});
promise.then(function(user) {
res.json(user.name);
});
當我傳遞不正確的userId時,我得到Unhandled rejection CastError: Cast to ObjectId failed
錯誤打印到控制台。
我認為res.json(err)
后跟return
語句將足以正確處理錯誤並阻止它顯示在控制台中,但事實並非如此。 我該怎么做呢?
回調:
var query = User.findOne({_id: userId});
query.exec(function (err) {
if (err) {
// handle error
return;
}
// handle success
});
承諾:
var query = User.findOne({_id: userId});
query.exec().then(function () {
// handle success
}).catch(function (err) {
// handle error
});
目前你正在混合這兩種風格。 選擇一種風格並堅持下去。
只需對代碼進行最小的更改:
var query = User.findOne({_id: userId});
var promise = query.exec(function(err) {
if (err) {
res.json(err);
return Promise.reject(err); // Updated this line
}
});
promise.then(function(user) {
res.json(user.name);
});
正確使用承諾:
User.findOne({_.id: userId})
.then(function(user) {
return res.json(user.name);
})
.catch(function(err) {
return res.json(err);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.