如何使用node.js从两个不同的数据库系统检索数据?

时间:2019-02-13 09:01:06

标签: node.js mongodb oracle

就像我想显示一些在oracle数据库中的数据和一些在MongoDB数据库中的数据(我正在使用MongoDB和node.js)。如何合并这两个数据库并显示输出?

我不知道如何开始...

预先感谢

1 个答案:

答案 0 :(得分:0)

从两个数据库查询归结为(通常)合并两个结果数组,每个数据库中一个。您可以对下面的代码使用类似的方法,在这种情况下,我只是使用简单的对象来表示数据库,但是方法完全相同。

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();