Soy newbee. Aquí está mi código. Básicamente, estoy almacenando mi jwt en Mongo DB y se está almacenando correctamente. Cuando intento obtener ese token para verificarlo. No puedo obtener ese token. Y console.log(find_refreshtoken) muestra datos inesperados en lugar de mostrar el token. Quiero obtener solo tomados de estos datos.
Por favor, ayúdame. Gracias.
{ _id: 621df700e560c645664a5b8a tooken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2NDYxMzA5NDQsImV4cCI6M..." user: 620cc33a4776c82d2f636399 createdAt: 2022-03-01T10:35:44.270+00:00 __v: 0 }el código va aquí:
verifyRefreshToken: (refreshToken) =>{ return new Promise((resolve,reject)=>{ JWT.verify(refreshToken,process.env.Refresh_Token_Secret,(err,payload)=>{ if(err)return reject(createError.Unauthorized()) const userId=payload.aud const find_refreshtoken= RefreshTokenModel.find({"user":userId},{"tooken":1,"_id":0}); console.log(find_refreshtoken); if(!find_refreshtoken){ reject(createError.InternalServerError()) return } if(find_refreshtoken === refreshToken){ console.log(find_refreshtoken); return resolve(userId) }else{reject(createError.Unauthorized())} //It is executing this part //resolve(userId) }) }) }Todo lo que necesitas es leer la documentación .
El método de find devuelve una consulta , lo que significa que son datos esperados, no como usted reclama datos inesperados .
Entonces, para que su código funcione, simplemente cambie:
const find_refreshtoken = RefreshTokenModel.find({"user":userId},{"tooken":1,"_id":0});a:
const result = await RefreshTokenModel.find({"user":userId},{"tooken":1,"_id":0}).exec(); o incluso mejor usa findOne , ya que solo quieres uno, supongo:
const result = await RefreshTokenModel.findOne({"user":userId},{"tooken":1,"_id":0}).exec();