2016-08-04 43 views
0

我想讓自己的遠程方法重置密碼。用戶只需將電子郵件放在路徑中,服務器將發送accessToken作爲響應。在調用resetPasswordRequest時回調時發生回調崩潰多於一個

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);應用程序不會崩潰

回答

0

我找到了錯誤的原因。 MyUser.on('resetPasswordRequest', function (info))正在收聽。所以每次調用requestPasswordReset時,都會創建一個新的偵聽器。當用戶第二次提出請求時,有兩個監聽者,他們都發送響應。將MyUser.on('resetPasswordRequest', function (info))放在js文件的根目錄中就失去了問題。

相關問題