Я пытаюсь создать страницу настроек, где пользователь может обновить свои учетные данные (имя пользователя и т. Д.). Длина имени пользователя составляет 5
код сервера (node.js)
/* ................
code to update other fields
...............*/
if (newUsername && newUsername !== user.username) {
user.username = newUsername;
messages.push({
message: 'Username updated successfuly',
error: false,
});
}
await user.save({ j: true }, (err) => {
if (err) {
messages.push({ message: err.message, error: true });
}
res.clearCookie(accessTokenName);
createJWTCookie(user, res);
res.render('settings', { messages });
});
Однако это не работает, как я хочу этого. Встроенная проверка действительно срабатывает и предотвращает сохранение недопустимых полей, но токен по-прежнему обновляется с неверной информацией. Я считаю, что это связано с тем, что аргумент (пользователь) createJWTCookie
все еще содержит информацию до запуска метода user.save()
.
Даже если я console.log(user)
после запуска метода user.save()
он содержит недопустимый ввод от пользователя. Но если я выхожу из системы и снова вхожу в систему (это создает новый JWT Cook ie с пользователем из базы данных), генерируемый токен будет иметь только действительные поля. Это означает, что были обновлены только действительные поля, в то время как другие изменения были отменены.
Как мне получить обновленный пользовательский документ после того, как user.save()
был запущен, чтобы я мог создать действительный JWT cook ie без пользователя необходимо выйти и снова войти в систему?