作成するDB接続ごとに、sequelizeのさまざまなインスタンスを作成する必要があります。
const Sequelize = require('Sequelize');
const userDb = new Sequelize(/* ... */);
const contentDb = new Sequelize(/* ... */);
sequelizeから作成された各インスタンスには、独自のDB情報があります(db host、url、user、passなど) 、およびこれらの値は変更されることを意図していないため、sequelizeの1つのインスタンスで複数の接続を作成する「正しい」方法はありません。
ドキュメントから :
データベースごとに1つのインスタンス
これを行うための「一般的な」アプローチは、データベースをconfig.json
に配置することです。 ファイルを作成してループし、動的に接続を作成します。たとえば、次のようになります。
config.json
{
/*...*/
databases: {
user: {
path: 'xxxxxxxx'
},
content: {
path: 'xxxxxxxx'
}
}
}
アプリ
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
それを起動して実行するには、もう少しコーディングを行う必要がありますが、それは一般的な考え方です。