未处理的拒绝 - 护照登录app节点js

时间:2016-08-20 17:02:09

标签: javascript node.js passport.js

我正在创建nodejs登录应用并使用passport js进行身份验证。我使用本地mysql数据库并使用sequelize作为ORM库。

在我的用户模型中,我创建了通过用户名获取用户。

module.exports.findUserByUsername = function(username, callback){
  User.findOne({ where: {username: username} }).then(function(user) {
    var userObj = user.get({plain:true});
    callback(userObj);
  })
}; 

在路由器文件

passport.use('login', new LocalStrategy(
    function (username, password, done) {

        User.findUserByUsername(username, function (err, user) {
            if(err) {
                throw err;
            }
            console.log(user);
        })
    }
));

我收到错误Unhandled rejection (<{object_values...>, no stack trace)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你需要像这样更改回调:

callback(null, userObj);

在路由器文件中遇到错误时throw。在异步调用环境中抛出异常不是一个好习惯。无论如何,你调用findUserByUsername传递一个回调,期望第一个参数是错误。

findUserByUsername中,您将在错误位置返回用户对象。所以你在路由器文件中的逻辑认为它是一个错误。

为了避免这些异常,你不需要抛出异常,在回调函数中返回它们。