如何连接NodeJS / ExpressJS中的两个数组

在NodeJS / Express应用程序中合并两个相同的JSON数组最合适的方法是什么? 我有三个Web服务…两个数据API服务和一个“包装”服务。 这两个数据服务具有相同的对象和模式(通过Mongoose从Mongo拉出)。 我想“包装”服务调用这两个数据服务,并将结果作为一个组合的响应发回。

对象是完全相同的:

{ "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); }); }); 

但是,我找不到可以工作的连接或合并操作:

 { "items" : [ ] } 

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 } ] }