Как получить данные из двух разных систем баз данных, используя node.js? - PullRequest
0 голосов
/ 13 февраля 2019

Как я хочу показать некоторые данные, которые находятся в базе данных oracle, и некоторые данные, которые находятся в базе данных MongoDB (я использую MongoDB и node.js). Как объединить эти две базы данных и показать вывод?

Не знаю, с чего начать ...

Заранее спасибо

1 Ответ

0 голосов
/ 13 февраля 2019

Запросы из двух баз данных сводятся к (как правило) объединению двух массивов результатов, по одному от каждой базы данных.Вы можете использовать похожий подход к приведенному ниже коду, в этом случае я просто использую простые объекты для представления БД, однако подход точно такой же.

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...