使用 Sequelize 的多个数据存储连接
Use multiple datastore connections with Sequelize
我在 /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
中指定
最终,我完成了对 sails-hook-sequelize
的升级,以同时支持多个数据库连接实例。
此时(2016 年 4 月 13 日)尚未审查拉取请求,但它已通过所有测试和 CI 检查,所以不用担心。 (回购的所有者在过去几个月似乎忽略了 PR 审查)。
你可以找到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
属性 的连接名称(参见
OP).
详细解释见pull-request.
主评论
我在 /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
最终,我完成了对 sails-hook-sequelize
的升级,以同时支持多个数据库连接实例。
此时(2016 年 4 月 13 日)尚未审查拉取请求,但它已通过所有测试和 CI 检查,所以不用担心。 (回购的所有者在过去几个月似乎忽略了 PR 审查)。
你可以找到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
属性 的连接名称(参见 OP).
详细解释见pull-request.
主评论