Продолжить Model.associations [псевдоним]. Есть еще способ получить ассоциированные модели? - PullRequest
0 голосов
/ 08 мая 2020

Я пытался выяснить, могу ли я с помощью класса модели (а не экземпляра) получить все связанные ассоциации (ownTo, hasOne, hasMany, et c.) С соответствующими классами. Я нашел свойство Model.associations, которое не задокументировано, поэтому, если возможно, я бы не хотел его использовать. Вы, ребята, знаете, как насчет того, чтобы получить этот результат?

Моя цель, просто передать строку в качестве модели в запросе и при этом установить другие свойства, например условия where.

Таким образом, все работает нормально.

Model.findAll({
    include:['partner']
})

Но если вы хотите сделать что-то вроде этого:

Model.findAll({
    include:[
         {
            model: 'partner',
            where: {id:2}
         }
    ]
})

Мне нужно импортировать модель, и это нормально, она тоже работает. Я просто хочу передать строку и выполнить синтаксический анализ в более высоком классе, потому что это раздражает, продолжая импортировать модели, и делает невозможным динамическое c включение без стольких условий.

1 Ответ

0 голосов
/ 11 мая 2020

Если вы хотите включить модель, не импортируя ее. Вы можете сделать это с помощью определения псевдонима для вашей ассоциации.

User.hasMany(models.Tool, { as: 'Instruments'}); // here Intruments is alias to Tool

Вы также можете включить псевдоним по имени, указав строку, которая соответствует псевдониму ассоциации:

User.findAll({ include: 'Instruments' }); // Also works
User.findAll({ include: { association: 'Instruments' } }); // Also works

Вывод:

[{
  "name": "John Doe",
  "id": 1,
  "Instruments": [{
    "name": "Scissor",
    "id": 1,
    "userId": 1
  }]
}]

Подробнее читайте здесь.

...