Итак, я использовал passport-jwt и приступил к решению этой проблемы. У меня есть две модели: Сотрудник с именем, адресом, ролью, ... и Учетные данные Сотрудника с именем пользователя, passsword, employee (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);
})
}))
}