在不同的服务器上序列化多个数据库
Sequelize multiple databases on different servers
我正在为数据库 ORM 使用 Node、Express、Angular 和 Sequelize。到目前为止一切都很好,但我只是需要向 sequelize/node 后端添加一个额外的数据源。
我将如何在 Sequelize 中设置两个不同的数据库(一台服务器上的 db1 和另一台服务器上的 db2)并并排使用它们?
这甚至受支持吗,我需要为此写一些自己的东西吗?我到处都看了,但找不到任何提及做这样的事情。
在此先感谢您的帮助。
如果模式不同(例如,db1 是您的 User/Groups 数据库,db2 是您的订单数据库),您可以只创建两个 Sequelize 实例:
var db1sequelize = new Sequelize('db1', 'db1user', 'db1pass'...);
db1sequelize.define('User', {...})
db1sequelize.define('Group', {...})
var db2sequelize = new Sequelize('db2', 'db2user', 'db2pass'...);
db2sequelize.define('Order', {...})
User.findAll(...) // queries db1
Order.findAll(...) // queries db2
但是,我怀疑这些之间的关联不会很好地发挥作用。例如,您绝对可以关联用户和组,因为它们都属于同一模式:
User.hasMany(Group);
但是为了在订单和用户之间建立关联,我会改为手动添加该列。
db2sequelize.define('Order', {
userId: Sequelize.INTEGER,
...
})
User.create({...}).then(function(createdUser) { // inserts in db1
return Order.create({userId: createdUser.id, ...}) // inserts in db2
});
我也不确定这些数据库之间的事务如何工作...
我正在为数据库 ORM 使用 Node、Express、Angular 和 Sequelize。到目前为止一切都很好,但我只是需要向 sequelize/node 后端添加一个额外的数据源。
我将如何在 Sequelize 中设置两个不同的数据库(一台服务器上的 db1 和另一台服务器上的 db2)并并排使用它们?
这甚至受支持吗,我需要为此写一些自己的东西吗?我到处都看了,但找不到任何提及做这样的事情。
在此先感谢您的帮助。
如果模式不同(例如,db1 是您的 User/Groups 数据库,db2 是您的订单数据库),您可以只创建两个 Sequelize 实例:
var db1sequelize = new Sequelize('db1', 'db1user', 'db1pass'...);
db1sequelize.define('User', {...})
db1sequelize.define('Group', {...})
var db2sequelize = new Sequelize('db2', 'db2user', 'db2pass'...);
db2sequelize.define('Order', {...})
User.findAll(...) // queries db1
Order.findAll(...) // queries db2
但是,我怀疑这些之间的关联不会很好地发挥作用。例如,您绝对可以关联用户和组,因为它们都属于同一模式:
User.hasMany(Group);
但是为了在订单和用户之间建立关联,我会改为手动添加该列。
db2sequelize.define('Order', {
userId: Sequelize.INTEGER,
...
})
User.create({...}).then(function(createdUser) { // inserts in db1
return Order.create({userId: createdUser.id, ...}) // inserts in db2
});
我也不确定这些数据库之间的事务如何工作...