我有以下情况:
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?
答案 0 :(得分:2)
作为一般规则:是的,您应该定义两者。
从实际角度来看,如果您需要在实例上调用Foo
和fooInstance.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
}]
});