使用hasOne和belongsTo是否有任何意义?

时间:2015-12-03 22:19:23

标签: javascript sql node.js associations sequelize.js

我有以下情况:

Account.belongsTo(models.Address, {
    as: 'address',
    foreignKey: { name: 'addressId', field: 'address_id' },
    onDelete: 'RESTRICT'
});

Address.hasOne(models.Account, {
    as: 'account',
    foreignKey: { name: 'addressId', field: 'address_id' },
    onDelete: 'RESTRICT'
});

如果我应该同时使用它们,我就无法得到它。 Belongs可能是的,但是还必须使用hasOne?

2 个答案:

答案 0 :(得分:2)

作为一般规则:是的,您应该定义两者。

从实际角度来看,如果您需要在实例上调用FoofooInstance.setBar方法,则应定义模型fooInstance.getBar的关联。如果您需要Foo.find(..., { include: [Bar] });,还应该定义关联。

从概念的角度来看,你应该问这种关系是否双向是有意义的。如果一个Foo属于一个Bar,这是否意味着一个Bar有一个(或很多)Foo?通常这个问题的答案是肯定的。

答案 1 :(得分:1)

通过这两个定义,您可以选择帐户的地址和地址帐户。

models.account.findAll({
  include: [{
    model: models.address
  }]
});

models.address.findAll({
  include: [{
    model: models.account
  }]
});