使用相同的外键续订连接具有多个记录的表

时间:2015-03-06 11:22:07

标签: mysql node.js express sequelize.js

我有3个模型的续集数据库。

  1. 团队 - 主键:id
  2. 参与者 - foreignKey参考团队 - teamId
  3. TeamResult- foreignKey引用团队 - teamId
  4. 每个团队可以有多个参与者,因此参与者表中可以有多个具有相同teamId的记录。与团队成绩相同的情况。

    我正在尝试通过以下方式查询所有参与者和团队成果与团队相关联的查询:

    {
        "id": 1,
        "teamName": "Awesome Team",
        //other team attributes..
    
    
        "participants": [
            {
                "id": 12,
                "teamId": 1,
                //other details
            },
            {
                "id": 13,
                "teamId": 1,
                //other details
            },
        ],
    
        "teamResults": [
            {
                "id": 22,
                "teamId": 1,
                //other details
            },
            {
                "id": 13,
                "teamId": 1,
                //other details
            }
        ]
    }
    

    我写了下面的陈述,但我得到的只是第一个参与者和导师,而不是全部:

    models.Team.find({
            where: {
                id: req.params.teamId
            },
            include: [
                {model: models.Participant, required: true},
                {model: models.TeamResult, required: true}
            ]
        }).then(function(team){/* handle team object here */})
    

    为了获得所需的结果,我需要做出哪些更改?

1 个答案:

答案 0 :(得分:1)

自己解决了。犯了一个愚蠢的错误。我没有hasMany关联,而是在团队协会中使用hasOne。现在修好了。