2016-09-29 60 views
0

我刚刚开始使用loopback.We在用户出现的环回中创建中间件并填充任务表单。当他提交表单时,我们将数据保存在数据库中,然后我们需要调用第三方REST API来存储附加了我们数据库返回的ID的相同数据。 我读了关于环回中的REST连接器,但我认为它不符合这个目的。所以我决定继续使用请求库。 我已经创建了一个RemoteMethod,我正在做这一切。下面的代码: -保存数据后在回送中调用第三方API

const request = require('request'); 
const url = "http://third-party-api"; 


module.exports = function(Tasks) { 

    function cb(err, data){ 
    return { data: data }; 
    } 

    Tasks.add = function(data, cb){ 
    Tasks.create({data: data}, function(err, object){ 
     var taskId = object.id 
     request.get({url: url}, function(error, response, body){ 
     cb(error, body); 
     }); 
    }); 
    }; 

    Tasks.remoteMethod(
     'add', 
     { 
      accepts: [{arg: 'data', type: 'object'}], 
      returns: {arg: 'result', type: 'object'}, 
      http: {path: '/add', verb: "post"} 
     } 
); 
}; 

但是,这会导致错误(IP更改): -

{"error":{"name":"Error","status":500,"message":"connect ECONNREFUSED 0.0.0.0","code":"ECONNREFUSED","errno":"ECONNREFUSED","syscall":"connect","address":"0.0.0.0"}} 

我一直无法弄清楚是怎么回事。 NodeJs,Express,Loopback一切对我来说都很新颖&现在我已经有相当长的一段时间了。 我在做什么错?是否有任何其他方法需要遵循

+0

'connect ECONNREFUSED'表示您无法与服务器通信。可能是它的端口问题。检查通信服务器的所有必需信息 – abdulbarik

+0

尝试从浏览器中击中你的第三方API并检查它是否给你提供任何信息 – abdulbarik

+0

进入错误的IP不是我的公有IP,甚至是端口与回送服务器不同。 – abhinav

回答

0

0.0.0.0表示您本地计算机上的所有IP localhost。

很可能,您忘记定义外部API正在侦听的端口。

如果外部API是在例如端口3001听,然后就修改代码,这样

const url = "http://localhost:3001"; 

刚一说明,没有什么错误使用request为您的使用情况,但环回REST连接器也将完成你所需要的。