就像我想显示一些在oracle数据库中的数据和一些在MongoDB数据库中的数据(我正在使用MongoDB和node.js)。如何合并这两个数据库并显示输出?
我不知道如何开始...
预先感谢
答案 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();