2016-07-26 2 views
2

У меня есть 3 модели:sequelize жадная загрузка через промежуточную модель

Modela, ModelB и моделька

  • Modela belongsToMany ModelB (п: м)
  • ModelB belongsToMany Modela (м: п)
  • ModelB belongsTo моделька (п: 1)
  • моделька hasMany ModelB (1: N)

мне нужно, чтобы получить Modela со всеми его моделька (через ModelB)

Я считаю, что-то вроде этого, но я не могу заставить его работать, а когда создают ассоциации through sequelize создает странные ForeignKeys и Sequelize Docs по этой теме очень неполные, на мой вкус

ModelA.findOne({ 
    where: ..., 
    include: [ 
    { 
     model: ModelC, 
     through: ... 
    } 
    ] 
}); 

EDIT: Я изменил все объекты к модели A, B, C, потому что это вопрос/проблема о API Sequelize; Не о данных/Model Design

ответ

0

Ваша User модель не имеет прямого отношения с вашей Company модели, но вы можете получить Company через Role с использованием вложенных включает в себя:

User.findOne({ 
    where: ..., 
    include: [ 
    { 
     model: Role, 
     include: [ 
     { 
      model: Company, 
      ... 
     } 
     ] 
    } 
    ] 
}); 
+0

да, но что бы получить меня дубликаты Company, и даже не прямо в роли (когда они должны быть) –

+0

Это ничего сумасшедшего, это довольно стандартное сопоставление, и другие ORM упрощают выполнение такого рода запросов, я уверен, что Sequelize имеет способ, но не очень ясно –

+0

Ваша модель «Роль» должна относиться к 'Company' через отношение' ownTo'. 'принадлежит ToMany' означает отношение« многие ко многим » –

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