我有一个模型,其中“匹配”具有许多“ MatchRoundTypes”

匹配项具有uuid主键
matchRoundTypes引用匹配项具有matchSUUID作为其列名。

当我尝试在包含MatchRoundTypes的Matches上进行查找时,我得到:

调试:错误:MatchRoundTypes与比赛无关!

我的查询看起来像:

Matches.findAll({where: ["isPublished = ?", true], include: [MatchRoundTypes]})


在此之前,我已经发出了以下命令:

Matches.hasMany(MatchRoundTypes, { as: 'roundMaps', foreignKey: 'matchUUID', useJunctionTable: false})


我已经尝试过hasMany语句的多种变体...包括foreignKey和not等等。

这是我的Matches模型:

sequelize.define('Matches', {
        uuid:    {type: Seq.STRING(36),  allowNull: false, primaryKey: true},
        name:    {type: Seq.STRING(64),  allowNull: false},

    }, {tableName: 'match', freezeTableName: true})


这是我的MatchRoundTypes模型:

sequelize.define('MatchRoundTypes', {
{
        uuid:               {type: Seq.STRING(36),  allowNull: false, primaryKey: true},
        roundTypeUUID:      {type: Seq.STRING(36),  allowNull: false},
        roundName:          {type: Seq.STRING(64),  allowNull: true},
        matchUUID: {
          type: Seq.STRING(36),
          references: "match",
          referencesKey: "uuid",
          allowNull: false
        }

    }, {tableName: 'matchRoundTypes', freezeTableName: true})


任何见解都是最欢迎的。

最佳答案

您在定义hasMany关联时使用别名,因此还必须告诉sequelize在进行急切加载时使用该别名:

Matches.findAll({
  where: ["isPublished = ?", true],
  include: [{ model: MatchRoundTypes, as: 'roundMaps' }]
})

10-05 19:09