如何连接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 } ] }
- 如何在Node.JS中分别接收req.body.model的所有对象而不是它的所有variables?
- req.locals与res.locals与res.data与req.data与快速中间件中的app.locals
- 使用Express在dynamic路由上服务静态文件
- 我是否应该在每个路由模块文件中重复所有这些要求?
- 在Node.js + Express中使用承诺处理错误
- Express.js 4路由器如何让事情达到404页面
- 将查询数据从一个函数返回到一个jade / express.js页面
- 使用Express Application Generator的Socket.io
- app.use和app.get与express.static有什么区别?