【问题标题】:Sequelize multiple databases, common Model nameSequelize多个数据库,通用模型名
【发布时间】:2020-11-16 15:35:48
【问题描述】:
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({})

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

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

【问题讨论】:

    标签: mysql node.js database express sequelize.js


    【解决方案1】:

    首先,在定义模型类时,您指定一个 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 迁移而不是 sequelize.sync

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 2014-09-17
      • 2021-10-25
      相关资源
      最近更新 更多