【发布时间】:2020-07-04 06:51:04
【问题描述】:
所以,我使用的是 passport-jwt 并遇到了这个问题。我有两个模型,一个是带有姓名、地址、角色……的员工,另一个是带有用户名、密码、员工(Object_Id)的员工凭证。 然后我想要的是,在我找到员工用户名和密码之后,我需要员工角色,所以我使用了employee.findbyId,但它返回一个承诺并在获得员工角色之前调用回调完成。
我想要的是它发生的原因(详细了解它)???我没有使用 async/await 所以函数是同步的。
(passport)=>{
let options = {};
options.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');
options.secretOrKey = config.SECRET;
passport.use(new Strategy( options,(payload,done)=>{
Employee_credential.findById(payload.data._id, (err, employee)=>{
if(err) return done(err,false);
if(employee){
var result = Employee.getById(employee.employee).populate('role').catch(err=>{throw err})
employee.role = result.role.role_Id;
return done(null, employee);
}
return done(null,false);
})
}))
}
【问题讨论】:
-
我没有使用 async/await,所以这个函数是同步的——它不能那样工作。 API 本质上是异步的,您是否使用
async函数取决于您作为程序员。 -
async/await 就是所谓的 syntactic sugar - 它使异步函数的工作变得更容易,但这并不是使函数异步的原因。
标签: javascript node.js function jwt passport.js