2017-02-22 49 views
3

我一直未能獲得passport.authenticate在async/await或promise模式中工作。這裏有一個我覺得應該工作的例子,但是它沒有執行passport.authenticate()。如何獲得passport.authenticate使用異步/等待模式的本地策略

const passport = require("passport"); 

let user; 

try { 
    user = await __promisifiedPassportAuthentication(); 

    console.log("You'll never have this ", user); 
} catch (err) { 
    throw err; 
} 

function __promisifiedPassportAuthentication() { 
    return new Promise((resolve, reject) => { 

     console.log("I run"); 

     passport.authenticate('local', (err, user, info) => { 

      console.log("I never run"); 

      if (err) reject(err); 
      if (user) resolve(user); 
     } 
    } 
} 

任何智慧的聖人詞將不勝感激。

回答

5

只是櫃面任何其他程序員累了在那裏遇到這個..

function __promisifiedPassportAuthentication() { 
    return new Promise((resolve, reject) => { 
     passport.authenticate('local', (err, user, info) => { 
      ... 
     })(req, res) // <-- that guy right there 
    } 
} 
+0

缺少一個')''之前(REQ,RES)' –

+0

@RaulRene謝謝你的福氣。 –

+0

不應將'req'和'res'傳遞給'promisifiedPassportAuthentication'? – lolbas