包括双方的一对一关联

时间:2019-04-18 11:17:43

标签: node.js postgresql sequelize.js

我有两个需要一对一关联的模型:Coach和Team。一支球队只有一名教练,而一支教练只有一支球队。

我需要能够从两个方面包括:有时我查询教练并包括团队,有时我查询团队并包括教练。

现在我不确定:是否需要在每个表上创建引用列(表“ Teams”中的CoachId和表“ Coachs”中的TeamId)?

我尝试创建这两列并按如下方式建立关联:

module.exports = models => {
  models.Coach.hasOne(models.Team)
  models.Team.belongsTo(models.Coach)
}

但是由于某些原因,当我创建教练并设置现有的TeamId时,TeamId列保持为空。另外,即使已经填充,也必须使用正确的TeamId更新Coach行,这感觉很奇怪。

是否可以一次写入就可以全部完成,然后如上所述从双方进行查询?甚至在使用Sequelize一段时间之后,像我一样的感觉仍然不了解Sequelize的一些基本知识。

谢谢!

1 个答案:

答案 0 :(得分:1)

要从双方进行查询,您都需要使用一个贯穿表

module.exports = models => {
  models.Coach.hasOne(models.Team)
  models.Team.belongsTo(models.Coach, {through: 'TeamCoach'})
}

TeamCoach将链接两个表中的主键,以便可以进行双向查询。