Доброй ночи.
Столкнулся с странной проблемой.
У меня такой код в UserService:
const tokens = TokenService.generateTokens({...userDto}); // Эта функция для генерации токенов
await TokenService.saveToken(userDto.id, tokens.refreshToken); // Эта функция для сохранения в БД рефреш-токена
Вот коды этих функций:
async generateTokens(data) {
const refreshToken = this.generateRefreshToken(data);
const accessToken = this.generateAccessToken(data);
return {
refreshToken,
accessToken
}
}
async generateRefreshToken(data) {
return jwt.sign(data, JWT_KEY_REFRESH, {expiresIn: "90d"});
}
async generateAccessToken(data) {
return jwt.sign(data, JWT_KEY_ACCESS, {expiresIn: "15m"});
}
async saveToken(userId, refreshToken) {
const TokenData = await TokenModel.findOne({user: userId})
if (TokenData) {
TokenData.refreshToken = refreshToken;
console.log(TokenData)
return TokenData.save();
}
const token = await TokenModel.create({user: userId, refreshToken});
return token;
}
Получаю эту ошибку:
ValidationError: Token validation failed: refreshToken: Path `refreshToken` is required.
at Document.invalidate (/home/nikita/nikitasavc-backend/node_modules/mongoose/lib/document.js:3123:32)
at /home/nikita/nikitasavc-backend/node_modules/mongoose/lib/document.js:2911:17
at /home/nikita/nikitasavc-backend/node_modules/mongoose/lib/schematype.js:1349:9
at process.processTicksAndRejections (node:internal/process/task_queues:77:11)
Проверяю значение tokens.refreshToken перед функцией
TokenService.saveToken()
undefined
Проверяю значение tokens:
Promise {
{
refreshToken: Promise {
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2ODEzMzgzNDMsImV4cCI6MTY4OTExNDM0M30.cPd9lQn4gQriyq4XVB9VrombG_11HGK7q0m_jU4P4hs'
},
accessToken: Promise {
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2ODEzMzgzNDMsImV4cCI6MTY4MTMzOTI0M30.D9mwm876fNpWsm_AI9FbMIT2AElyFiLDUnZUrAllEbM'
}
}
}
Вроде же все есть, но почему undefined? Подскажите, пожалуйста.