Rest Sailsjs外部模块未在使用中工作
我使用restler()从外部源进行api调用。在Sailsjs中,据我所知,助手函数称为服务。我将get、post等的restler代码放在他们自己的服务中,这样我就不会一遍又一遍地重复同样的代码。但是,在我的控制器中运行良好的restler函数在服务中不再工作。例如:Rest Sailsjs外部模块未在使用中工作,rest,express,sails.js,Rest,Express,Sails.js,我使用restler()从外部源进行api调用。在Sailsjs中,据我所知,助手函数称为服务。我将get、post等的restler代码放在他们自己的服务中,这样我就不会一遍又一遍地重复同样的代码。但是,在我的控制器中运行良好的restler函数在服务中不再工作。例如: //api/services/myService.js module.export{ httpGet: function(){ var rest = require('restler');
//api/services/myService.js
module.export{
httpGet: function(){
var rest = require('restler');
rest.get('http://google.com').on('complete', function(result) {
if (result instanceof Error) {
console.log('Error:', result.message);
this.retry(5000); // try again after 5 sec
} else {
console.log(result);
}
});
}
}
我知道我的服务被正确使用;我已尝试从服务返回一个变量以进行双重检查:
httpGet: function(){
var check = null;
var rest = require('restler');
rest.get('http://google.com').on('complete', function(result) {
if (result instanceof Error) {
check = false;
console.log('Error:', result.message);
this.retry(5000); // try again after 5 sec
} else {
console.log(result);
check = true;
}
});
return check;
//in the controller, myService.httpGet() returns null, not true or false
}
任何帮助都将不胜感激。Salisjs v0.12.4最好让服务接受回调
//api/services/myService.js
module.exports = {
httpGet: function(callback){
var rest = require('restler');
rest.get('http://google.com').on('complete', function(result) {
if (result instanceof Error) {
console.log('Error:', result.message);
return callback(result, null)
//this.retry(5000); // try again after 5 sec
} else {
console.log(result);
return callback(null, result)
}
});
}
}
然后在调用服务时从控制器传递回调
myService.httpGet(function callback(err, result){
// handle error
// use result
})
此外,关于您的问题,您正在返回返回检查代码>来自service early,带有您分配给它的值null
PS:您可以使用承诺而不是回调()让服务接受回调会更好
//api/services/myService.js
module.exports = {
httpGet: function(callback){
var rest = require('restler');
rest.get('http://google.com').on('complete', function(result) {
if (result instanceof Error) {
console.log('Error:', result.message);
return callback(result, null)
//this.retry(5000); // try again after 5 sec
} else {
console.log(result);
return callback(null, result)
}
});
}
}
然后在调用服务时从控制器传递回调
myService.httpGet(function callback(err, result){
// handle error
// use result
})
此外,关于您的问题,您正在返回返回检查代码>来自service early,带有您分配给它的值null
PS:您可以使用承诺而不是回调()您应该将httpGet
函数导出为模块对象的属性。基本上,你有一个“小”打字错误。与此相反:
module.export{
httpGet: function(){
你应该有这个:
module.exports = {
httpGet: function(){
此外,如果要返回结果,请添加一个回调
:
module.exports = {
httpGet: function(callback){
...
if (result instanceof Error) {
console.log('Error:', result.message);
return callback(result, null)
} else {
console.log(result);
return callback(null, result)
}
...
。。。或者使用承诺。您应该将httpGet
函数导出为模块对象的属性。基本上,你有一个“小”打字错误。与此相反:
module.export{
httpGet: function(){
你应该有这个:
module.exports = {
httpGet: function(){
此外,如果要返回结果,请添加一个回调
:
module.exports = {
httpGet: function(callback){
...
if (result instanceof Error) {
console.log('Error:', result.message);
return callback(result, null)
} else {
console.log(result);
return callback(null, result)
}
...
。。。或者使用承诺。一件小事。我认为应该有module.exports={
。否则会有语法错误。@Bonanza是的。的确。这是一个打字错误。:)谢谢。我根本误解了回调;我试图在函数中返回一个值。一件小事。我认为应该有module.exports={
。否则会出现语法错误。@Bonanza是的。的确。这是一个打字错误。:)谢谢。我根本误解了回调;我试图在函数中返回一个值。