我在 /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/