Sequelize多个数据库,通用Model名

Sequelize multiple databases, common Model name

fs
  .readdirSync(__dirname + '/commonmodel')
  .filter(file => {
    return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3)     === '.js');
  })
  .forEach(file => {
    const model = require(path.join(__dirname + '/commonmodel', file))(db.DB1,         Sequelize.DataTypes, { logging: false });
    db[model.name] = model;
  });

fs
  .readdirSync(__dirname + '/commonmodel')
  .filter(file => {
    return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
  })
  .forEach(file => {
    const model = require(path.join(__dirname + '/commonmodel', file))(db.DB2,     Sequelize.DataTypes, { logging: false });
    db[model.name] = model;
  });

db.commonmodel.create({})

创建模型时如何指定要使用的数据库。

我正在尝试使用具有相同型号名称的多个数据库,我已成功连接并同步到其中三个我有一个通用的型号名称,我应该如何具体说明我要将模型保存在哪个数据库中. 谢谢!

首先,在定义模型时 类 您指定了一个 sequelize 实例。所以只需创建两个不同的 sequelize 实例即可。

// src/instances/sequelizeFirstDB

const Sequelize = require('sequelize');

module.exports = new Sequelize(process.env.FIRST_DATABASE_URL || 'postgres://postgres:Password@localhost:3205/firstDb'); // Put your connection string here.
// src/instances/sequelizeSecondDB

const Sequelize = require('sequelize');

module.exports = new Sequelize(process.env.SECOND_DATABASE_URL || 'postgres://postgres:Password@localhost:3205/secondDB'); // Put your connection string here.

在使用 init 时,指定您想要的实例 (db)。

const Sequelize = require('sequelize');

const { sequelizeInstance } = require('src/instances/sequelizeSecondDB');

class YourModel extends Sequelize.Model { }
YourModel.init({
    name: {
        type: Sequelize.DataTypes.STRING(100),
        allowNull: false,
    }
}, { sequelize: sequelizeInstance });

module.exports = YourModel;

之后就可以导入需要的模型来查询数据库了。

旁注。比 sequelize.sync

更喜欢 sequelize 迁移