我想连接到服务器端的不同数据库,以便我可以使用 Node 执行包含这两个数据库的查询。
我有一个像这样的config.js
:
module.exports = {
database: {
user: 'brunojs',
password: 'bdpf5',
connectString: 'localhost:1521/orcl'
},
jwtSecretKey: "jmvhDdDBMvqb=M@6h&QVA7x"
};
这会保存我访问第一个数据库的信息。
然后我有一个执行查询的 list.js
文件:
var oracledb = require('oracledb');
var jwt = require('jsonwebtoken');
var config = require(__dirname + '../../config.js');
function get(req, res, next) {
oracledb.getConnection(
config.database,
function(err, connection){
if (err) {
return next(err);
}
connection.execute(
'select num_sequencial, notes, des_especialidade, dt_diag ' +
'from organite_repository ',
{},//no binds
{
outFormat: oracledb.OBJECT
},
function(err, results){
if (err) {
connection.release(function(err) {
if (err) {
console.error(err.message);
}
});
return next(err);
}
res.status(200).json(results.rows);
connection.release(function(err) {
if (err) {
console.error(err.message);
}
});
}
);
}
);
}
module.exports.get = get;
一切正常。
问题是,现在我想使用另一个数据库执行查询。我怎样才能做到这一点?
最佳答案
正确的解决方案是使用池 https://github.com/oracle/node-oracledb/blob/master/doc/api.md#createpool 创建巨大的池:
module.exports = {
database: [{user: 'brunojs',
password: 'bdpf5',
connectString: 'localhost:1521/orcl',
poolAlias:'database1'
},
{user: 'brunojs',
password: 'bdpf5',
connectString: 'localhost2:1521/orcl',
poolAlias:'database2'
}],
jwtSecretKey: "jmvhDdDBMvqb=M@6h&QVA7x"
};
在初始化网络服务器期间,初始化池
const dbConfig = require('../config/database.js');
async function initialize() {
dbConfig.database.forEach(async function(item) {
const pool = await oracledb.createPool(item);
});
}
然后您可以在调用连接过程时使用创建的池:
conn = await oracledb.getConnection('database1');
const execresult = await conn.execute(context.execsql, execbinds, context.opts);
关于javascript - Node 访问多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35631553/