2013-09-25 2 views
1

У меня есть модель, где «Спичка» имеет много «MatchRoundTypes»Sequelize для NodeJS и hasMany используя ошибку UUID

Похожее имеет первичный ключ UUID matchRoundTypes ссылка Совпадает с matchesUUID в качестве своего имени столбца.

Когда я пытаюсь сделать находку на матчи, которые включает в себя MatchRoundTypes я получаю:

DEBUG: Ошибка: MatchRoundTypes не ассоциировано спичек!

мой запрос выглядит следующим образом:

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

Я дал следующую команду перед всем этим:

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

Я попытался многочисленные вариации на hasMany заявление ... в том числе и ForeignKey нет, и т.д.

Вот моя Похожее модель:

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}) 

Любые идеи можно только приветствовать.

ответ

1

Вы используете псевдоним при определении hasMany ассоциации, поэтому вы должны сказать sequelize использовать этот псевдоним при выполнении жадной загрузки:

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

Извините, что это просто ошибка вырезать и вставить ... я сокращало название таблицы для ясности ради поста и пропустило это ... отредактирует и исправит – Marc

+0

на другую заметку ... моей таблице дано другое имя ... пока не имеет значения в моем использовании sequelize, но в объявлении obj: tableName: 'match', freezeTableName: true ... аналогично MatchRoundTypes. – Marc

+0

Важной вещью является 'as'. Когда вы определяете, что в ассоциации hasMany, вы также должны определить его при активной загрузке. –

Смежные вопросы