1

我有一个模型,其中“Matches”有很多“MatchRoundTypes”

Matches 的主键为 uuid matchRoundTypes 引用 Matches 以matchesUUID 作为其列名。

当我尝试对包含 MatchRoundTypes 的匹配项进行查找时,我得到:

调试:错误: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})

任何见解都是最受欢迎的。

4

1 回答 1

1

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

Matches.findAll({
  where: ["isPublished = ?", true], 
  include: [{ model: MatchRoundTypes, as: 'roundMaps' }]
})
于 2013-09-26T09:16:54.960 回答