调用resetPasswordRequest时,回调会在回调中崩溃

时间:2016-08-04 10:23:05

标签: node.js callback loopbackjs strongloop

我正在尝试创建自己的远程方法来重置密码。用户只需将电子邮件放在路径中,服务器就会将accessToken作为响应发送。

MyUser.remoteMethod('requestPasswordReset',
        {
          http: {path: '/reset/:usermail', verb: 'post'},
          accepts: [{arg: 'usermail', type: 'string', required: true, http: {source: 'path'}}],
          returns: {root: true, type: 'object'},
          description: 'Allows Users to request a password reset, returns an error if the specified email does not exist'
        }
);

MyUser.requestPasswordReset = function (usermail, next) {
    MyUser.resetPassword({email: usermail}, function (err) {
      if (err) {
        next(err);
      }
      else {
        MyUser.on('resetPasswordRequest', function (info) {

          console.log('next will be executed, but crashes the second time');
          next(null, info.accessToken.id); 
        });
      }
    })
  };

我第一次向/reset/:usermail提出请求时工作完美,但第二次运行请求时应用程序崩溃并出现跟随错误

  

发送后无法设置标头

我知道在调用更多回调时通常会发生此错误。 如果我给回调的另一个错误参数。例如next('abc')代替null next(null, info.accessToken.id);应用程序不会崩溃

1 个答案:

答案 0 :(得分:0)

我找到了错误的原因。 MyUser.on('resetPasswordRequest', function (info))正在成为一名倾听者。因此,每次调用requestPasswordReset时,都会创建一个新的侦听器。当用户第二次发出请求时,有两个侦听器,他们都发送响应。将MyUser.on('resetPasswordRequest', function (info))放在js文件的根目录中会丢失问题。