在mongoose query.exec()中正确的错误处理

Cor*_*row 3 mongoose node.js

我已经深入研究了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);
    });
Run Code Online (Sandbox Code Playgroud)

当我传递不正确的userId时,我将Unhandled rejection CastError: Cast to ObjectId failed错误打印到控制台.

我认为res.json(err)后面的return语句将足以正确处理错误并阻止它在控制台中显示,但事实并非如此.我该怎么做呢?

rsp*_*rsp 9

回调:

var query = User.findOne({_id: userId});
query.exec(function (err) {
    if (err) {
        // handle error
        return;
    }
    // handle success
});
Run Code Online (Sandbox Code Playgroud)

承诺:

var query = User.findOne({_id: userId});
query.exec().then(function () {
    // handle success
}).catch(function (err) {
    // handle error
});
Run Code Online (Sandbox Code Playgroud)

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