Я хочу подключиться к различным базам данных на стороне сервера, чтобы я мог выполнять запросы, которые включают эти две базы данных, используя узел.
У меня есть 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;
Все работает нормально.
Дело в том, что сейчас я хочу выполнять запросы с использованием другой базы данных. Как я могу это сделать?
вы всегда можете использовать ссылки на стороне БД, поэтому ваш Java-код не должен подключаться к другому БД, например:
select num_sequencial, notes, des_especialidade, dt_diag
from organite_repository@linkA
UNION
select num_sequencial, notes, des_especialidade, dt_diag
from organite_repository@linkB
/* ... */
Это немного выходит за рамки вашего вопроса, но вы также можете взглянуть на Waterline. Он поддерживает настройку нескольких баз данных, а затем привязывает модели к ним, так что знание того, где хранятся определенные модели данных, абстрагируется.
Сначала добавьте второй объект учетных данных в config.js
module.exports = {
database: {
user: 'brunojs',
password: 'bdpf5',
connectString: 'localhost:1521/orcl'
},
database2: {
user: 'user2',
password: 'password',
connectString: 'someotherhost:1521/orcl'
},
jwtSecretKey: "jmvhDdDBMvqb=M@6h&QVA7x"
};
затем используйте тот или иной здесь:
oracledb.getConnection(
config.database, // you could change this line to config.database2
function(err, connection){
if (err) { ...
Если вы хотите запросить одну базу данных, а затем другую, вам нужно будет поддерживать ссылки на оба объекта connection
(для краткости ошибки проверки опущены):
oracledb.GetConnection(
config.database,
function(err, connection1) {
oracledb.GetConnection(
config.database2,
function(err, connection2) {
// in this function you can use either connection object
connection1.execute(...);
connection2.execute(...);
}
});