使用sequelize在express.js中基于路由连接mysql数据库

icomxhvb  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(407)

我正在构建多租户应用程序,其中每个客户机都有单独的数据库。
是否可以根据路由更改sequelize中的数据库连接?
我有两条路
scale.com/ss94545
scale.com/mn94545
登录后,用户将被重定向到scale.com/ss94545,以获取其特定站点的所有数据。
另一个mn94545站点使用一个单独的数据库,因此如果他们想获得所有数据,必须访问scale.com/mn94545。
每个安装都有自己的数据库,所有数据库都有相同的模式。
是否可以根据访问的路由更改数据库连接?
这是我的基本静态数据连接:

const sequelize = new Sequelize('ss94545', 'root', 'root', {
  host: '127.0.0.1',
  port: 3306,
  dialect: 'mysql',
  logging: false,
});
yzuktlbb

yzuktlbb1#

您是否尝试过将数据库名设为route param,然后示例化sequelize?假设你用的是express,它会是这样的。。。

app.get('/:dbname', function(req, res) {
  const sequelize = new Sequelize(req.params.dbname, 'root', 'root', {
    host: '127.0.0.1',
    port: 3306,
    dialect: 'mysql',
    logging: false,
  });
  //insert sequelize code here
  res.send('test ' + req.params.dbname);
});

相关问题