curUser.password = newPassword;
curUser.passwordConfirm = passwordConfirm;
await curUser.save();
У меня есть этот код для выполнения в этой функции:
exports.updatePassword = catchAsync(async (req, res, next) => {
// 1-) Get user from the collection
const { currentPassword, newPassword, passwordConfirm } = req.body;
const curUser = await User.findById(req.user.id).select('+password');
if (!curUser) {
return next(new AppError('Token is invalid !', 404));
}
// 2-) Check if posted current password is correct
if (!(await curUser.correctPassword(curUser.password, currentPassword))) {
return next(new AppError('Password is incorrect !', 401));
}
curUser.password = newPassword;
curUser.passwordConfirm = passwordConfirm;
await curUser.save();
//findByIdAndUpdate yerine save ederek kullanmamızın sebebi oluşturmuş olduğumuz pre middlewareleri ile validatorların update işleminde
//çalışmayacak olması
//3-) Log user in, send JWT
createTokenAndSend(200, res, curUser._id);
});
И выше у меня есть одно промежуточное ПО в userModel для создания passwordChangedAt в базе данных, когда пользователь обновил свой пароль:
userSchema.pre('save', async function(next) {
if (!this.isModified('password') || this.isNew) return next();
//Eğer yeniyse bu fonksiyonu çalıştırmamasını ve direk diğer middleware'e geçmesini belirttik
this.passwordChangedAt = Date.now - 1000;
});
Итак, проблема в том, почему этот метод промежуточного программного обеспечения должен быть asyn c. Когда я удаляю 'asycn' до этой функции промежуточного программного обеспечения, я получаю ошибку в почтальоне. На самом деле это не ошибка, просто посмтан не может получить такой ответ: Это изображение этого
Итак, почему у меня возникает эта проблема, когда я удаляю asyn c из этого предварительного промежуточное ПО?