使用Sequelize

时间:2016-04-12 06:40:22

标签: 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属性,则Sequelize挂钩无法加载。

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

有关如何同时设置2个连接的任何建议吗?

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

1 个答案:

答案 0 :(得分:0)

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

此时(4月13日和16日)尚未审核提取请求,但已通过所有测试和CI检查,因此无后顾之忧。 (回购的所有者似乎在过去几个月忽略了公关评论)。

您可以找到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)。

  3. 有关详细说明,请参阅pull-request的主要评论。