最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

没有达到异步瀑布的一部分

IT培训 admin 6浏览 0评论

没有达到异步瀑布的一部分

我试图第一次使用异步瀑布,并遇到一个问题,我有一个没有达到的功能,它是超时请求。

我已经包含了我想要制作/使用的控制器的所有代码。我把一个console.log放在我似乎无法达到的地方。

到目前为止,其余的代码似乎没有错误地运行。我已经多次完成了console.log,一切都很好。我还检查了数据库,这是正确的结果。唯一的问题是发送电子邮件部分,但这不应该是一个问题,因为我在同一个文件中使用相同的电子邮件发送功能,它的工作原理。我在此之前使用它来发送包含重置令牌的电子邮件。

exports.tokenPost = function(req, res, next) {

  let password = req.body.password;
  let password_confirm = req.body.password_confirm;

  if(password != password_confirm) return res.status(400).json({message: 'Error passwords don\'t match. Please make sure they match'});

  async.waterfall([
    function(done) {
      User
        .findOne({ resetPasswordToken: req.params.token })
        .where('resetPasswordExpires').gt(Date.now())
        .exec(function(err, user) {
          if(err){
            console.log(err);
          }
          if (!user) {
            return res.status(400).json({success: false, message: 'We can\'t find a user with that reset token. Please try resetting your password again or contact customer support.'});
          }

          user.password = password;
          // user.resetPasswordToken = undefined;
          // user.resetPasswordExpires = undefined;

          user.save(function(err) {
            if (err) console.log(err);
            if (err) return next(err);
          });
        });
    },
    function(user, done) {
      console.log('This code is not being run);
      let message = 'Hello,\n\n' + 'this is a confirmation that the password for your account ' + user.email + ' has just been changed.\n';
      sendEmail(`"Company Name" ${config.noreply}`, req.body.email, 'Password changed', message);
      res.status(200).json({success: true, message: 'Success your password has been changed.'});
    }
  ], function(err) {
    console.log(err);
    if (err) return next(err);

  });
};

我期待发送电子邮件,然后运行res.status.json给我回应我正在寻找。

回答如下:

弄清楚什么是错误的,当使用异步瀑布时,你添加done作为你必须调用的函数的参数,以便调用下一个函数。保存固定用户时,我没有调用完成。

还忘了我在user.email上调用req.body.email的电子邮件部分,因为我的表单上没有电子邮件作为字段。

没有达到异步瀑布的一部分

我试图第一次使用异步瀑布,并遇到一个问题,我有一个没有达到的功能,它是超时请求。

我已经包含了我想要制作/使用的控制器的所有代码。我把一个console.log放在我似乎无法达到的地方。

到目前为止,其余的代码似乎没有错误地运行。我已经多次完成了console.log,一切都很好。我还检查了数据库,这是正确的结果。唯一的问题是发送电子邮件部分,但这不应该是一个问题,因为我在同一个文件中使用相同的电子邮件发送功能,它的工作原理。我在此之前使用它来发送包含重置令牌的电子邮件。

exports.tokenPost = function(req, res, next) {

  let password = req.body.password;
  let password_confirm = req.body.password_confirm;

  if(password != password_confirm) return res.status(400).json({message: 'Error passwords don\'t match. Please make sure they match'});

  async.waterfall([
    function(done) {
      User
        .findOne({ resetPasswordToken: req.params.token })
        .where('resetPasswordExpires').gt(Date.now())
        .exec(function(err, user) {
          if(err){
            console.log(err);
          }
          if (!user) {
            return res.status(400).json({success: false, message: 'We can\'t find a user with that reset token. Please try resetting your password again or contact customer support.'});
          }

          user.password = password;
          // user.resetPasswordToken = undefined;
          // user.resetPasswordExpires = undefined;

          user.save(function(err) {
            if (err) console.log(err);
            if (err) return next(err);
          });
        });
    },
    function(user, done) {
      console.log('This code is not being run);
      let message = 'Hello,\n\n' + 'this is a confirmation that the password for your account ' + user.email + ' has just been changed.\n';
      sendEmail(`"Company Name" ${config.noreply}`, req.body.email, 'Password changed', message);
      res.status(200).json({success: true, message: 'Success your password has been changed.'});
    }
  ], function(err) {
    console.log(err);
    if (err) return next(err);

  });
};

我期待发送电子邮件,然后运行res.status.json给我回应我正在寻找。

回答如下:

弄清楚什么是错误的,当使用异步瀑布时,你添加done作为你必须调用的函数的参数,以便调用下一个函数。保存固定用户时,我没有调用完成。

还忘了我在user.email上调用req.body.email的电子邮件部分,因为我的表单上没有电子邮件作为字段。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论