2015-12-15 56 views
-1

我想使用loopback作爲「中間人」來連接兩個不同的api(server1和server2)。當我將用戶的電子郵件傳遞給此「中間人」時,它將與服務器1進行覈對,如果該服務器返回true,則「中間人」將從服務器2中獲取所有數據,保存到服務器1中。如何創建回送外部CRUD?

有人可以指導我如何做到這一點?我試圖遵循環迴文檔,但我得不到我想要的東西,我錯過了什麼?

回答

0

所以實際的實現並沒有真正與Loopback.js框架相關。這可以在任何Node.js代碼中實現。

而實際上上方的描述是正確的步驟來做到這一點使用簡單的HTTP請求發送到服務器1和2

例如使用request 模塊此代​​碼示出了中間人的僞代碼。

const request = require('request'); 

// 1. Call Server 1 
request('http://server1.com/api/message', function (err, res, body) { 

    // 2. Check body message is true 
    if (body.message === true) { 

     // 3. Get data from Server 2 
     request('http://server2.com/api/get', function (err, res, body) { 

      // 4. Save data to Server 1 
      request({ 
       url: 'http://server1.com/api/save', 
       method: "POST", 
       json: requestData }, 
       function (err, res body) { /* process response here... */ }); 
     }); 
    } 
}); 
+0

但我需要使用回送這個。你能指導我如何在環回中使用它嗎? –

0

假設你已經設置了呼叫您的外部API提供商按我的回答your related question 2個數據源 - 在這個例子中,你需要以下呼叫:

Server1的數據源:

  • checkEmail // GET方法,返回true或false
  • save // POST方法,返回true或false

Server2上的數據源:

  • getDetails // GET或POST方法,返回詳細聯繫方式的電子郵件地址

您還需要有一個適當的方法的環回模式作爲你的切入點。例如,讓我們稱之爲聯繫人,使用稱爲store的遠程方法,接收電子郵件參數。此代碼會做所有的工作:

Contact.store = function(email, cb) { 
    var server1 = Contact.app.dataSources.Server1; 
    var server2 = Contact.app.dataSources.Server2; 

    server1.checkEmail(email, function(validated) { 
     if(validated) { 
      server2.getDetails(email, function(details) { 
       if(details) { 
        server1.save(details, function(success) { 
         if(success) { 
          cb(null, details); 
         } 
        }) 
       } 
      }) 
     } 

    }) 
} 

(你可以promisify上述所有的更清潔的代碼)

+0

嗨conradj,我仍然這樣混淆,你有什麼樣的例子來告訴我嗎?或者你能指導我如何做到這一點? –

+0

@永平根據您的需求給您特定的幫助會更容易。您是否能夠在您嘗試使用的外部API的問題中提供更多信息?此外,你可以發佈你迄今爲止所做的事情以及你有哪些錯誤或問題? – conradj