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

时间:2018-05-30 16:37:20

标签: mysql node.js sequelize.js multi-tenant saas

我正在构建多租户应用程序,其中每个客户端都有单独的数据库。

是否可以根据路由更改sequelize中的数据库连接?

我有两条路线

  1. scale.com/ss94545

  2. scale.com/mn94545

  3. 登录后,用户将被重定向到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,
    });
    

1 个答案:

答案 0 :(得分:1)

您是否尝试过将数据库名称设为路由参数,然后再实例化sequelize?假设您可能正在使用快递,它会像这样......

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);
});