2015-01-02 79 views
1

中有什麼的NodeJS /快速應用上合併兩個相同的JSON陣列的最方便的方式?我有三個Web服務...兩個數據api服務和一個「包裝」服務。這兩個數據服務都有相同的對象和模式(通過Mongoose從Mongo拉出)。我希望「包裝」服務可以調用這兩種數據服務,並將結果作爲一個組合響應發回。如何連接兩個數組中的NodeJS/ExpressJS

的對象都是相同的:

{ 
    "items": [ 
     { 
      "_id": "14e016a2-9eb8-4f83-b597-bda8ad747adb", 
      "name": "Item A 01", 
      "__v": 0 
     }, 
     { 
      "_id": "4040c450-4624-4341-9a80-211814d630ab", 
      "name": "Item A 02 - Renamed", 
      "__v": 0 
     }, 
     { 
      "_id": "4fc4e0f7-36bc-4a87-a280-97e4f84a4a43", 
      "name": "Item A 04 - Renamed", 
      "__v": 0 
     } 
    ] 
} 

我想這兩個結果集的結合:

request('http://localhost:8080/itemsa', function(err, response, body){ 
     if (err || response.statusCode != 200){ res.status(500).send({ message: 'Failure service 01' }); return; } 

     var objA = JSON.parse(body); 

     request('http://localhost:8081/itemsb', function(err, response, body) { 
      if (err || response.statusCode != 200) { 
       res.status(500).send({message: 'Failure service 02'}); 
       return; 
      } 

      var objB = JSON.parse(body); 

      var objC = { 
       items: [] 
      }; 

      objC.items.concat(objA.items); 
      objC.items.concat(objB.items); 

      res.send(objC); 
     }); 
    }); 

但是,我無法找到一個CONCAT或合併的作品操作:

{ 
    "items" : [ ] 
} 
+1

你工作在某種舊的CRT終端,它不會讓你剪切和粘貼? –

+0

在未來,請把實際的代碼中的問題。 SO會自動執行語法高亮顯示。 – loganfsmyth

回答

4

Aaah,正在使用concat功能不正確...

request('http://localhost:8080/itemsa', function(err, response, body){ 
     if (err || response.statusCode != 200){ res.status(500).send({ message: 'Failure service 01' }); return; } 

     var objA = JSON.parse(body); 

     request('http://localhost:8081/itemsb', function(err, response, body) { 
      if (err || response.statusCode != 200) { 
       res.status(500).send({message: 'Failure service 02'}); 
       return; 
      } 

      var objB = JSON.parse(body); 

      var objC = { 
       items: [] 
      }; 

      //objC.items.concat(objA.items); 
      //objC.items.concat(objB.items); 

      objC.items = objA.items.concat(objB.items); 

      res.send(objC); 
     }); 
    }); 

concat方法產生的輸出對象...

{ 
    "items": [ 
     { 
      "_id": "14e016a2-9eb8-4f83-b597-bda8ad747adb", 
      "name": "Item A 01", 
      "__v": 0 
     }, 
     { 
      "_id": "4040c450-4624-4341-9a80-211814d630ab", 
      "name": "Item A 02 - Renamed", 
      "__v": 0 
     }, 
     { 
      "_id": "4fc4e0f7-36bc-4a87-a280-97e4f84a4a43", 
      "name": "Item A 04 - Renamed", 
      "__v": 0 
     }, 
     { 
      "_id": "1997b22b-541c-4338-950f-a97566f0cfc6", 
      "name": "Item B 01", 
      "__v": 0 
     }, 
      { 
      "_id": "ef2eb8e8-6eaf-426b-a69a-0dd04c0b473f", 
      "name": "Item B 02", 
      "__v": 0 
     } 
    ] 
}