Узел доступа к нескольким базам данных

0

Я хочу подключиться к различным базам данных на стороне сервера, чтобы я мог выполнять запросы, которые включают эти две базы данных, используя узел.

У меня есть 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;

Все работает нормально.

Дело в том, что сейчас я хочу выполнять запросы с использованием другой базы данных. Как я могу это сделать?

3 ответа

1

вы всегда можете использовать ссылки на стороне БД, поэтому ваш 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
/* ... */
1

Это немного выходит за рамки вашего вопроса, но вы также можете взглянуть на Waterline. Он поддерживает настройку нескольких баз данных, а затем привязывает модели к ним, так что знание того, где хранятся определенные модели данных, абстрагируется.

1

Сначала добавьте второй объект учетных данных в 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(...);
            }
    });
  • 0
    Спасибо тебе, мой пол. Что, если я хочу выполнить запрос, используя две базы данных?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню