node.js - 通过 Sequelize 使用多个数据存储连接

标签 node.js sails.js sequelize.js

我在 /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 覆盖。模型中的属性(如果指定)。如果我注释掉或不指定 connection位于 /config/models.js 的属性(property)然后 Sequelize 钩子(Hook)无法加载。

然而,当尝试查询具有 postgres 的模型时作为连接,它仍然在 MySQL DB 中查询它们,但失败了...如果我设置 postgres作为默认连接,无论本地 connection 是什么,它将始终在该数据库中查询不同型号的属性说。

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

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

最佳答案

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

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

您可以找到the pull-request here .

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

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

配置是基本配置,就像您通常为 Sequelize 所做的那样:
  • 将连接配置添加到 /config/connections.js (见 OP)
  • 对于您要使用辅助连接的每个模型 - 只需添加
    options.connection 的连接名称模型本身的属性(参见
    操作)。

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

    关于node.js - 通过 Sequelize 使用多个数据存储连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36565379/

    相关文章:

    node.js - 将 Docker 与具有 node-gyp 依赖项的 nodejs 一起使用

    node.js - 如何使用 .forEach() 插入多个集合并检查它是否存在

    javascript - 是否可以从 powerpoint 中提取幻灯片并使用 node.js 将它们保存为图像?

    node.js - sails/水线 : How to retrieve relations inside a relation?

    mysql - 序列化模型关系

    node.js - 无法从 Node 服务器打开 Angular 构建应用程序

    javascript - 被 promise 对象的错误链混淆

    mysql - 如何使用 unix 套接字(mamp)而不是用于 sails js db 连接的端口?

    postgresql - 连接 Vue.js 前端 -> 通过 Express、Node.js、Sequelize (API) 端点。 (PostgreSQL)

    javascript - 在多个字段之间使用 ILIKE 子句进行序列化查询