Flavour of Async/await ES2017

One really exciting thing for JS Developer that last week was dropped Node 7.6 which brought support for async/await. If you haven’t heard of async/await before, it’s an amazing update to JavaScript (ES2017) that allows us to write synchronous looking asynchronous code without nested callbacks or even chained .then() promises.

/* 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');
};

Happy coding :)

Written on November 1, 2017