2016-09-29 39 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連接器也將完成你所需要的。

相關問題