Вкус async / await ES2017
Одна действительно захватывающая вещь для JS Developer, что на прошлой неделе был удален Node 7.6, который обеспечивал поддержку async / await
. Если вы раньше не слышали об async / await, это потрясающее обновление для JavaScript (ES2017), которое позволяет нам писать синхронно выглядящий асинхронный код без вложенных обратных вызовов или даже связанных .then()
обещаний.
/* Forgot Password Flow*/ export default forgotPassword = async(req,res,next) => { // Checking if user exist const user = await User.findOne({email : req.body.email}) ; if(!user){ req.flash = ('error' , 'No Account found with this email'); return res.redirect('/login') } // Set password reset token for user user.resetPasswordToken = crypto.randomBytes(20).toString('hex'); user.resetPasswordExpires = Date.now() + 3600000 ; // 1 hour await user.save() // Sent Password reset email to User await mail.send({ user, file:'password-reset', resetUrl : `http://${req.headers.host}/account/reset/${user.resetPasswordToken}`, subject: 'Password Reset' }); req.flash('success', 'You have been emailed a password reset link.'); res.redirect('/login'); };
Особая благодарность Уэсу Босу :)