【问题标题】:Use multiple datastore connections with Sequelize通过 Sequelize 使用多个数据存储连接
【发布时间】:2016-04-12 06:40:22
【问题描述】:

我在 /config/connections.js 文件中定义了 2 个连接:

  monolithMysql: {
    user: 'store_app',
    database: 'store',
    dialect: 'mysql',
    options: {
      dialect: 'mysql',
      host: 'dockerhost',
      port: 3306,
      logging: console.log
    }
  },

  postgres: {
    user: 'user_app',
    database: 'user_authentication',
    dialect: 'postgres',
    options: {
      dialect: 'postgres',
      host: 'dockerhost',
      port: 8201,
      logging: console.log
    }
  }

并且在不同的模型中我已经放置了属性connection,以便区分它们,如下:

module.exports = {

  options: {
    connection: 'monolithMysql', // or 'postgres' in other models.
    ...

/config/models.js 中,我将monolithMysql 设置为默认连接。但这应该被模型中的connection 属性(如果指定)覆盖。 如果我注释掉或未在 /config/models.js 中指定 connection 属性,则 Sequelize 挂钩无法加载。

尽管如此,当尝试查询以postgres 作为连接的模型时,它仍然在 MySQL 数据库中查询它们,并且失败了...如果我将postgres 设置为默认连接,那么它将始终在该数据库中查询,不管不同模型的本地 connection 属性是什么。

有什么建议可以同时设置 2 个连接吗?

更新:发现它只初始化 1 个 Sequelize 实例 - 一个具有默认连接的实例,在 /config/models.js 中指定

【问题讨论】:

  • github.com/sequelize/sequelize/issues/263 也许这个对话可以帮到你。
  • 我看到了这个并想尝试一下,但问题是到目前为止我只通过sails-hook-sequelize/config/connections.js 设置Sequelize。而且我不知道要在哪里/哪个文件定义和调用new Sequelize,以便在 Sails 被解除之前调用 2 个连接。尝试使用/config/bootstrap.js,但没有按预期工作。

标签: node.js sails.js sequelize.js


【解决方案1】:

最后,我写了一个升级到sails-hook-sequelize 以同时支持多个数据库连接实例。

此时(2016 年 4 月 13 日)尚未审核拉取请求,但它已通过所有测试和 CI 检查,所以不用担心。 (在过去的几个月里,repo 的所有者似乎忽略了 PR 审查)。

你可以找到the pull-request here

为了在你的package.json文件中需要模块,以及多个数据库连接升级,只需写:

"sails-hook-sequelize": "git@github.com:galioy/sails-hook-sequelize.git#f0c0c5d72ee97ac5504e6f3a0825e37c3587909a"

配置是基本配置,就像您通常为 Sequelize 所做的那样:

  1. 将连接配置添加到/config/connections.js(参见 OP)

  2. 对于您要使用辅助连接的每个模型 - 只需添加 模型本身中与options.connection 属性的连接名称(请参阅 OP)。

详细解释见pull-request的主评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    相关资源
    最近更新 更多