2015-11-20 4 views
0

Я пытаюсь загрузить включает в существующую модель в sequelize. В экспресс мы предварительно проверяем модели, чтобы убедиться, что они существуют в промежуточном программном обеспечении.Загрузка включает в себя существующую модель

Поэтому, как только мы в самом «контроллер» мы хотим запустить некоторые включает в себя на этой существующей модели, которая передается в.

req.models.item.incude([ 
    {model: Post, as: 'posts'} 
]) 

Есть ли способ сделать это?

EDIT:

Я знаю, что мы можем сделать что-то подобное.

return req.models.item.getThing() 
    .then(function (thing) { 
     req.models.item.thing = thing; 

     return req.models.item; 
    }); 

Но:

  1. Мои расширения для входят, динамическое свойство, которые приходят через параметры URL, поэтому они не знают заранее.
  2. Это я верну выше, вы не увидите «вещь» в ответе. Мне нужно, чтобы он был хорошо построен как часть исходного экземпляра.

Что-то вроде .with('thing', 'other.thing'); Обозначение было бы здорово. Или в случае sequelize .with({include: ...}); или .include([{model: ...}]);

ответ

0

Если переменная req.models.item уже является Instance, но без других связанных с ним экземпляров («включает в себя»), то вы можете включить их, используя что-то вроде следующего кода:

Item.findAll({ 
    where: req.models.item.where(), 
    include: [{ 
    model: SomeAssociateModel, 
    }] 
}) 
.then(function(itemWithAssoc) { 
    // itemWithAssoc is an Instance for the same DB record as item, but with its associations 
}); 

Для получения дополнительной документации см. here. См. here для сценария, демонстрирующего это.


Update: Учитывая экземпляр, как я просто получить связанные модели?

Для этого просто использовать автоматически сгенерированные «getAssociation» функции получателя, например .:

function find_associations_of_instance(instance) { 
    return instance.getDetails(); 
} 

Я обновил скрипт, чтобы включить это в качестве примера. Для получения дополнительной информации об этих функциях см. Раздел SequelizeJS docs.

+0

Не повторяет ли этот запрос для элемента выбора. Дело только в том, чтобы вытащить его, так как у меня уже есть предмет. – Rob

+0

@Rob - ok gotcha, я отредактировал свой оригинальный ответ, чтобы включить как это сделать – cfogelberg

+0

Хм, просто бросает ошибки, которые не существуют, как на экземпляре, так и на модели. – Rob

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