我正在尝试将sails作为中间服务器实现,但我无法通过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)
服务器进行api调用。它适用于成功的api呼叫但在Api呼叫失败时它不会工作。
它给出了这个错误。
/**
* 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');
}
};
这是我的ApiController.js
{{1}}
我已经实现了错误功能,但它显示为未定义。我现在无法调试它。
答案 0 :(得分:3)
这是因为你在error
callBack中使用了这个,其中对此的引用进行了更改,因此未定义this.error
。为了做到这一点存储了这个的参考
一些变量并使用该变量代替此变量。
var protocol = 'http';
var self = this;
var success = function(response){
return res.ok(response);
},
error = function(err){
self.error(res,err);
};