在一个响应中合并响应数据
我有一个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,
});
});
});
我想在data
。所以我怎么能做到这一点一个响应eventRes
和eventBoostRes
?
eventRes
和eventBoostRes
是查询结果。
在此先感谢。
问题不是很清楚。
但是,它听起来像你得到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个查询同步运行,是不是最佳的。你可以优化此使用的承诺和运行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)
});
});
在另一方面,这应该可以在查询级别处理。
您可以像这样将它们组合起来:
EventModal.eventSearch(eventReq, type, async function (eventRes) {
EventModal.getBoostEvents(eventReq, type, async function (eventBoostRes) {
res.json({
status: true,
data: {
eventRes,
eventBoostRes
}
});
});
});
它包含在不同的数组对象中。所以我需要作出回应的修改。 –
你可以粘贴什么'eventRes'和'eventBoostRes'可以看起来像?并粘贴你想要'数据'包含在响应中的结果? – maxpaj
你可以扩展'eventRes'和'eventBoostRes'包含什么。 –
[我怎样才能动态合并两个JavaScript对象的属性?](https://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamically) –
在JS中,一切都像'obj.key = val'一样简单,其中val可以是一个js可指定的实体,如整数,对象或函数。它CSN是也'OBJ [键] = val'其中键可以是一个变量 –