序列化不同服务器上的多个数据库

ang*_*let 4 orm node.js express sequelize.js angularjs

我使用 Node、Express、Angular 和 Sequelize 进行数据库 ORM。到目前为止,一切都运行良好,但我只是需要向续集/节点后端添加额外的数据源。

我将如何在 Sequelize 中设置两个不同的数据库(一台服务器上的 db1 和另一台服务器上的 db2)并并排使用它们?
这是否支持,我需要为此编写自己的东西吗?我环顾四周,但找不到任何提及做这样的事情。

预先感谢您的任何帮助。

st.*_*ver 5

如果模式不同(例如,db1 是您的用户/组数据库,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
Run Code Online (Sandbox Code Playgroud)

然而,我怀疑这些之间的联系不会很好地发挥作用。例如,您绝对可以关联用户和组,因为它们都属于同一架构:

User.hasMany(Group);
Run Code Online (Sandbox Code Playgroud)

但为了在订单和用户之间关联,我只需手动添加列。

db2sequelize.define('Order', {
  userId: Sequelize.INTEGER,
  ...
})

User.create({...}).then(function(createdUser) {      // inserts in db1
  return Order.create({userId: createdUser.id, ...}) // inserts in db2
});
Run Code Online (Sandbox Code Playgroud)

我也不确定这些数据库之间的事务如何工作......