2016-08-20 15 views
0

nodejsログインアプリを作成し、認証にpassport jsを使用しています。私はローカルのmysqlデータベースを使用し、sequelizeをORMライブラリとして使用します。未処理拒否 - パスポートログインアプリケーションノードjs

私のユーザーモデルでは、ユーザー名でユーザーを取得するように作成しました。ルータファイルで

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

callback(null, userObj); 

ルータファイルであなたthrow出会いはエラーにします。非同期呼び出し環境で例外をスローするのは良い方法ではありません。とにかくfindUserByUsernameコールバックを渡すと、最初の引数が間違っています。

findUserByUsernameで、エラーのある場所にユーザーオブジェクトを戻します。だからあなたのルータファイルのロジックはエラーだと思っています。

これらの例外を回避するには、例外をスローする必要はなく、コールバック関数で返す必要があります。

+0

この背後にある概念を教えてください。 – Shashika

関連する問題