我有一个NodeJS服务器从两个不同的API中获取数据,然后我想在两个JSON响应中合并两者的结果。我在这里给你发送代码:
EventModal.eventSearch(eventReq, type, async function (eventRes) {
EventModal.getBoostEvents(eventReq, type, async function (eventBoostRes) {
res.json({
status: true,
data: eventRes,
eventBoostRes: eventBoostRes,
});
});
});
我想在eventRes
的一个回复中eventBoostRes
和data
。那么我该如何实现呢?
eventRes
和eventBoostRes
是查询结果。
提前致谢。
答案 0 :(得分:2)
你可以像这样组合它们:
EventModal.eventSearch(eventReq, type, async function (eventRes) {
EventModal.getBoostEvents(eventReq, type, async function (eventBoostRes) {
res.json({
status: true,
data: {
eventRes,
eventBoostRes
}
});
});
});
答案 1 :(得分:1)
问题不太清楚。
然而,听起来你得到2个数组并且你想在响应中返回一个数组。执行此操作的快速(和脏)方法是使用array.concat( anotherArray )
函数:
EventModal.eventSearch(eventReq, type, async function (eventRes) {
EventModal.getBoostEvents(eventReq, type, async function (eventBoostRes) {
res.json({
status: true,
data: eventRes.concat( eventBoostRes )
});
});
});
然而,这将导致2个查询同步运行并且不是最佳的。您可以对此进行优化以使用promises并并行运行2个查询:
Promise.all([ // this will run in parallel
EventModal.eventSearch(eventReq, type),
EventModal.getBoostEvents( eventReq, type )
]).then( function onSuccess([ eventRes, eventBoostRes ]) {
res.json({
status: true,
data: eventRes.concat( eventBoostRes )
});
});
另一方面;这可能应该在查询级别处理。