Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fortsetzung:Verwenden mehrerer Datenbanken

Sie müssen für jede DB-Verbindung, die Sie erstellen möchten, verschiedene Instanzen von sequelize erstellen:

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

Jede aus sequelize erstellte Instanz hat ihre eigenen DB-Informationen (DB-Host, URL, Benutzer, Pass usw.) , und diese Werte sollen nicht geändert werden, daher gibt es keine "korrekte" Möglichkeit, mehrere Verbindungen mit einer Instanz von sequelize herzustellen.

Aus ihrer Dokumentation :

Eine Instanz pro Datenbank

Ein "üblicher" Ansatz dafür ist, Ihre Datenbanken in einer config.json zu haben Datei und Schleife darüber, um Verbindungen dynamisch zu erstellen, etwa so:

config.json

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

Ihre App

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

Sie müssen ein bisschen mehr codieren, um es zum Laufen zu bringen, aber es ist eine allgemeine Idee.