Rest Sailsjs外部模块未在使用中工作

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');

我使用restler()从外部源进行api调用。在Sailsjs中,据我所知,助手函数称为服务。我将get、post等的restler代码放在他们自己的服务中,这样我就不会一遍又一遍地重复同样的代码。但是,在我的控制器中运行良好的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是的。的确。这是一个打字错误。:)谢谢。我根本误解了回调;我试图在函数中返回一个值。