Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sequelize :Utilisation de plusieurs bases de données

Vous devez créer différentes instances de sequelize pour chaque connexion à la base de données que vous souhaitez créer :

const Sequelize = require('Sequelize');
const userDb = new Sequelize(/* ... */);
const contentDb = new Sequelize(/* ... */);

Chaque instance créée à partir de sequelize a ses propres informations de base de données (hôte de base de données, url, utilisateur, passe, etc...) , et ces valeurs ne sont pas censées être modifiées, il n'y a donc pas de moyen "correct" de créer plusieurs connexions avec une instance de sequelize.

De leur documentation :

Une instance par base de données

Une approche "courante" pour ce faire est d'avoir vos bases de données dans un config.json file et faites une boucle dessus pour créer des connexions de manière dynamique, quelque chose comme ceci peut-être :

config.json

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

Votre application

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

Vous devrez faire un peu plus de codage pour le rendre opérationnel, mais c'est une idée générale.