我现在要在node.js函数中有一个名为message的变量,我想将其发送到角度控制器。这该怎么做?

api.js

router.post('/pages/auth/forgot-password', function(req,res,next){
    var maillist = req.body.email;
    async.waterfall([
        function(done) {
            crypto.randomBytes(20, function(err, buf) {
                var token = buf.toString('hex');
                done(err, token);
            });
        },

        function(token, done) {
            User.findOne({ email : maillist}, function(err, user) {
                if (!user){
                    return done(null, false,{message: 'No account with that email address exists.'});
                    return res.redirect('/pages/auth/forgot-password');
                }

                user.resetPasswordToken = token;
                user.resetPasswordExpires = Date.now() + 3600000;

                user.save(function(err) {
                    done(err, token, user);
                });

            });
        },

        function(token, user, done) {
            var mailOptions={
                to : maillist,
                subject : 'Password Recovery',
                text: 'You are receiving this because you (or someone else) have requested the reset of the password for your account.\n\n' +
                'Please click on the following link, or paste this into your browser to complete the process:\n\n' +
                'http://192.127.0.1:3000/pages/auth/reset-password/' + token + '\n\n' +
                'If you did not request this, please ignore this email and your password will remain unchanged.\n'
            };
            transport.sendMail(mailOptions, function(error, response){
                if(error){
                    return done(null, false,{message: 'An e-mail has been sent to ' + maillist + ' with further instructions.'});
                }
                transport.close();
            });

        }
    ], function(err){
        if (err) return next(err);
        res.redirect('/pages/auth/forgot-password');
    });
    return res.json({result:message});
});


我正在尝试像return res.json({result:message});一样发送,但是它显示了一个称为message undefined的错误。

最佳答案

尝试在最后一个回调中执行

transport.sendMail(mailOptions, function(error, response) {
        if (!error) {
          var message = {
            message: 'An e-mail has been sent to ' + maillist + ' with further instructions.'
          };
          done(null, message);
        }
        transport.close();
      });


然后在最后的回调中

  ], function(err,result) {
    if (err) return next(err);
    return res.json({
      result: result.message
    });
  });

09-30 16:06
查看更多