Сегодня я столкнулся с такой проблемой - поле не добавлено. У меня есть схема токена ниже
const {Schema, model, Types} = require('mongoose');
const schema = new Schema({
userId: {
type: Types.ObjectId,
ref: 'User'
},
token: {
type: String,
required: true,
}
})
module.exports = model('Token', schema);
Модель, к которой относится userId
const {Schema, model} = require('mongoose');
const schema = new Schema({
name: {
type: String,
required: true,
min: 6,
max: 255,
unique: true
},
email: {
type: String,
required: true,
max: 255,
unique: true
},
password: {
type: String,
required: true,
max: 1024,
min: 6
},
date: {
type: Date,
default: Date.now
}
})
module.exports = model('User', schema);
У меня есть маршрут к '/ refre sh' ниже для обновления моего токена
router.post('/refresh', async (req, res) => {
const { refreshToken } = req.body;
const dbToken = await Token.find({ token: refreshToken });
console.log(dbToken);
if (!dbToken) {
return res.status(404).json('This token doesn\'t exist');
}
await Token.deleteOne({ token: refreshToken });
const response = await issueTokenPair(dbToken.userId);
res.json(response);
});
И чтобы получить пару токенов, у меня есть функция issueTokenPair
async function issueTokenPair(userId) {
const newRefreshToken = uuid();
const token = new Token({ userId: Types.ObjectId(userId), token: newRefreshToken });
await token.save();
return {
token: jwt.sign({ id: userId }, process.env.TOKEN_SECRET, {
expiresIn: '15min'
}),
refreshToken: newRefreshToken
};
}
Но когда я передаю данные в '/ refre sh', например:
{
"refreshToken": "64615bf7-3af3-45d0-a31a-d8b672389428"
}
MongoDB создает такое поле в коллекции:
{
_id: 5e441b705d78ae26389fd0d5,
token: '64615bf7-3af3-45d0-a31a-d8b672389428',
__v: 0
}
Как видите, здесь нет идентификатора пользователя. В чем проблема и как я могу это исправить?