Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Sequelizar:usando vários bancos de dados


Você precisa criar diferentes instâncias de sequelize para cada conexão de banco de dados que deseja criar:
const Sequelize = require('Sequelize');
const userDb = new Sequelize(/* ... */);
const contentDb = new Sequelize(/* ... */);

Cada instância criada a partir de sequelize tem suas próprias informações de banco de dados (db host, url, user, pass, etc...) , e esses valores não devem ser alterados, portanto, não há uma maneira "correta" de criar várias conexões com uma instância de sequelize.

De seus documentos :

Uma instância por banco de dados



Uma abordagem "comum" para fazer isso é ter seus bancos de dados em um config.json e faça um loop sobre ele para criar conexões dinamicamente, algo assim talvez:

config.json
{
    /*...*/
    databases: {
        user: {
            path: 'xxxxxxxx'
        },
        content: {
            path: 'xxxxxxxx'
        }
    }
}

Seu aplicativo
const Sequelize = require('sequelize');
const config = require('./config.json');

// Loop through
const db = {};
const databases = Object.keys(config.databases);
for(let i = 0; i < databases.length; ++i) {
    let database = databases[i];
    let dbPath = config.databases[database];
    db[database] = new Sequelize( dbPath );
}

// Or a one liner
const db = Object.entries(config).reduce((r, db) => (r[db[0]] = db[1].path) && r, {});

// Sequelize instances:
// db.user
// db.content

Você precisará fazer um pouco mais de codificação para colocá-lo em funcionamento, mas é uma ideia geral.