2017-12-18 15 views
1

2つの異なるAPIからデータを取得するNodeJSサーバがあり、その結果を1つのJSONレスポンスで結合したいと考えています。ここで私はあなたのコードを送信しています:レスポンスデータを1つのレスポンスでマージする

EventModal.eventSearch(eventReq, type, async function (eventRes) { 
     EventModal.getBoostEvents(eventReq, type, async function (eventBoostRes) { 
          res.json({ 
           status: true, 
           data: eventRes, 
           eventBoostRes: eventBoostRes, 
          }); 
     }); 
    }); 

私はdata。だからどのように私はそれを達成することができます1つの応答にeventReseventBoostResをしたいですか?

eventResおよびeventBoostResはクエリ結果です。

ありがとうございます。

+0

'eventRes'と' eventBoostRes'に含まれるものを拡張できますか? –

+0

[2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?](https://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamically) –

+0

JSでは、すべてが 'obj.key = val'と同じくらい単純です。ここで、valは整数、オブジェクト、関数のようなjsの代入可能なエンティティです。それCSNキーが可変 –

答えて

1

質問は非常に明確ではありません。

しかし、2つの配列を取得していて、応答で1つの配列を返すように思えます。

EventModal.eventSearch(eventReq, type, async function (eventRes) { 
    EventModal.getBoostEvents(eventReq, type, async function (eventBoostRes) { 
     res.json({ 
      status: true, 
      data: eventRes.concat(eventBoostRes) 
     }); 
    }); 
}); 

しかし、これは2つのクエリが同期して実行させ、最適ではないでしょう。これを行うには、クイック(汚い)方法がarray.concat(anotherArray)機能を使用しています。あなたは約束を使用するために、これを最適化し、並列に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) 
    }); 
}); 

を。これはおそらくクエリレベルで処理する必要があります。

2

あなたは、このようにそれらを組み合わせることができます。

EventModal.eventSearch(eventReq, type, async function (eventRes) { 
    EventModal.getBoostEvents(eventReq, type, async function (eventBoostRes) { 
     res.json({ 
      status: true, 
      data: { 
       eventRes, 
       eventBoostRes 
      } 
     }); 
    }); 
}); 
+0

それに含まれます異なる配列オブジェクトに格納されます。ですから私はそれに応じて修正を加える必要があります。 –

+1

'eventRes'と' eventBoostRes'のように貼り付けることができますか?そして、 'data'が返す結果をレスポンスに貼り付けますか? – maxpaj

関連する問題