簡體   English   中英

在mongoose query.exec()中正確的錯誤處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM