Запросы из двух баз данных сводятся к (как правило) объединению двух массивов результатов, по одному от каждой базы данных.Вы можете использовать похожий подход к приведенному ниже коду, в этом случае я просто использую простые объекты для представления БД, однако подход точно такой же.
let database1 = {
query: function(queryText) {
return new Promise(resolve => setTimeout(() => resolve([{user_id: 1, name: "John Smith"}, {user_id: 2, name: "Mary Jones"}]), 100));
}
}
let database2 = {
query: function(queryText) {
return new Promise(resolve => setTimeout(() => resolve([{user_id: 1, dob: "1966-05-22"}, {user_id: 2, dob: "1979-11-01"}]), 100));
}
}
function mergeResults(result1, result2, key) {
var obj = result1.concat(result2).reduce((acc, v) => {
acc[v[key]] = Object.assign(acc[v[key]] || {}, v);
return acc;
}, {});
return Object.values(obj);
}
async function queryAndMerge() {
let result1 = await database1.query("get all users");
console.log("Result from db. 1: ", result1);
let result2 = await database2.query("get all users");
console.log("Result from db. 2: ", result2);
let mergedResult = mergeResults(result1, result2, "user_id");
console.log("Merged results: ", mergedResult);
}
queryAndMerge();