我已经深入研究了 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
});

promise :
var query = User.findOne({_id: userId});
query.exec().then(function () {
    // handle success
}).catch(function (err) {
    // handle error
});

目前您正在混合这两种风格。选择一种风格并坚持下去。

10-08 03:56
查看更多