未处理的承诺拒绝Bookshelf.js

时间:2018-01-16 20:32:03

标签: node.js promise bookshelf.js

我正在尝试使用bookshelf.js ORM设置密码重置方案,但我遇到了未处理的承诺拒绝错误

__local

我觉得我正在处理承诺好......问题是什么?

1 个答案:

答案 0 :(得分:0)

当您获取用户时,Bookshelf已经返回Promise,因此您不需要单独创建新的Promise。如果你愿意,你必须返回类似这样的Bookshelf Promise

return new Promise((resolve, reject) => {
    return User.where('email', useremail)

或者您可以像这样编写您的函数

var verifyEmail = function(useremail) {
    return User.forge()
        .where('email', useremail)
        .fetch()
        .then(user => {
            if(!user)
                return Promise.reject();
            return user.toJSON();
        })
        .catch(err => {
            return Promise.reject(new error.ERROR_500(err));
        })
    })

var recoverPassword = function(req, res) {
    var useremail = req.body.email;

    //verify email exists
    verifyEmail(useremail)
        .then(user => {})
        .catch(err => {
            res.status(err.status).json(err);
        })
}