在不同服务器上查找多个数据库

时间:2015-03-12 20:33:39

标签: angularjs node.js express orm sequelize.js

我正在使用Node,Express,Angular和Sequelize来处理数据库ORM。到目前为止,一切都运行良好,但我只需要在sequelize / node后端添加额外的数据源。

如何在Sequelize中设置两个不同的数据库(一台服务器上的db1和另一台服务器上的db2),并将它们并排使用?
这是否得到支持,我是否需要为自己写一些自己的东西?我到处都看了看,但是找不到这样的事情。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

如果模式不同(例如,db1是您的用户/组数据库而db2是您的Orders数据库),您只需创建两个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
});

我也不确定这些数据库之间的交易如何运作......