2016-09-17 12 views
3

中間サーバーとしてセールを実装しようとしていますが、Sailsサーバー経由でAPI呼び出しを行うことができません。成功したAPI呼び出しの場合は正常に機能しますが、API呼び出しが失敗した場合は機能しません。 このエラーが発生します。ここセイルエラー:未定義は関数ではありません

this.error(res,err); 
    ^

TypeError: undefined is not a function 
    at error (/Users/nitin.tiwari/owner-app-backend/api/controllers/ApiController.js:26:12) 
    at IncomingMessage.<anonymous> (/Users/nitin.tiwari/owner-app-backend/api/services/XHR.js:54:11) 
    at IncomingMessage.emit (events.js:129:20) 
    at _stream_readable.js:908:16 
    at process._tickDomainCallback (node.js:381:11) 

は私ApiController.js

/** 
* ApiController 
* 
* @description :: Server-side logic for managing apis 
* @help  :: See http://sailsjs.org/#!/documentation/concepts/Controllers 
*/ 

var config = sails.config; 

module.exports = { 

    /** 
    * @ApiController.ready() 
    * 
    * Prepare request object and calls XHR.send at the end. 
    * 
    */ 
    ready: function(req, res, method, data){ 
    var options; 
    var data = data || ''; 
    var protocol = 'http'; 
    var success = function(response){ 
     return res.ok(response); 
    }, 
    error = function(err){ 
     this.error(res,err); 
    }; 
     options = { 
     hostname: config.api.host, 
     path: req.originalUrl, 
     method: method, 
     headers: { 
      'Content-Type': 'application/json' 
     } 
     } 

    console.log(options,data); 
    XHR.send(options, data, success, error, protocol); 
    }, 

    /** 
    * @ApiController.get() 
    * 
    * Serves all the get request. 
    * 
    * Makes XHR to Rails API and reverts the response. 
    * 
    */ 
    error:function(res,err){ 
    if(err.status == 422 && err.error.error.code == 41){ 
     var obj = { 
      id: -1 
     } 
     return res.ok(obj); 
     } 
     return res.apiError(err); 
    }, 

    get: function(req, res){ 
    return this.ready(req, res, 'GET'); 
    } 

}; 

である私は、誤差関数を実装しているが、それが定義されていないとして、それが表示されます。私は今それをデバッグすることができません。

答えて

3

errorコールバックこの参照が変更されているので、this.errorは定義されていません。これを行うためには、これの参照を に格納し、その代わりにその変数を使用してください。

var protocol = 'http'; 
var self = this; 
var success = function(response){ 
    return res.ok(response); 
}, 
error = function(err){ 
    self.error(res,err); 
}; 
関連する問題