2017-08-06 10 views
-2

私はあなたが非同期のawait構文で滞在したい場合ので、私は高階関数からjavascriptでコールバックからデータを取得していますか?

signinUser: async (_, data) => { 
    const user = await User.findOne({'email': data.email.email}).exec(); 

    console.log(bcrypt.compare(data.email.password,user.password, (err,result)=>{ 
    if(err){return("sorry error")} 
    if(result) { 
     var token = jwt.sign({_id: user._id}, 
          config.secret, {expiresIn: 60 * 60 * 24 * 7}); 
    } 
    })) 

    return {user: {id: user._id, name: user.name, email: user.email}, token: "this is a token"} 
} 

答えて

0

それを返すことができます>>バック高階関数のスコープにトークン変数を取得するための最良の方法について疑問に思って、 bcrypt.compare呼び出しをQまたはBlueBirdライブラリーの約束に渡し、次のようなコードを書く必要があります。

let result = await Q.nfcall(bcrypt.compare, data.email.password,user.password) 
if(result) { 
    var token = jwt.sign({_id: user._id}, 
         config.secret, {expiresIn: 60 * 60 * 24 * 7}); 
} 

return {id: user._id, name: user.name, email: user.email}, token: token} 
関連する問題