2015-06-13 3 views
3

Мне кажется, что я ударил кирпичную стену, превратив свою прежнюю функциональность PHP-приложения в Node и Sequelize. Возможно, я приближаюсь к тому, что может сделать ORM, но просто хочу спросить, прежде чем я сдаюсь.Как заказать по агрегатной функции в sequelize

Представим себе три таблицы: Video, Task, PublishDate.

Приложение требует, чтобы Video может иметь несколько PublishDate s и несколько Task s. У Task s будут указаны сроки, рассчитанные путем просмотра минимума Video's PublishDate s.

Так что, если Video имеет два PublishDate х 2015-12-01 и 2015-08-15, мы использовали бы 2015-08-15 и выполнить дополнительные расчеты на то, чтобы получить Task срок.

Проблема возникает, когда я пытаюсь получить список Task s, упорядоченный по их рассчитанным срокам.

Я попытался много разных подходов. Эта последняя попытка пытается использовать sequelize.fn функцию

models.Task.findAll({ 
    where: {isActive: false, isCompleted: false}, 
    include: [ 
     { 
     model: models.Video, 
     attributes: [[sequelize.fn('min', 'video.publishDates.date'), 'dueDate']], 
     include: [models.PublishDate] 
     } 
    ], 
    order: [['video', 'dueDate', 'ASC']], 
    limit: 50 
}) 

Я не воодушевлен тем, что я направляюсь в правильном направлении, потому что даже без оговорки порядка, эта попытка возвращает только одну запись. Тем не менее, это кажется самым близким, что я был весь день, и мне не хватает информации или синтаксиса, которые сделают это возможным.

Это мой первый набег на мир ОРМ, поэтому я извиняюсь, если есть что-то простое, что мне не хватает. Я попытался наилучшим образом изучить документацию и другие вопросы в Google, но пока не повезло.

ответ

1

необходимо заказать с использованием функции. вы должны попробовать:

order : [['video','ASC'],[sequelize.fn('min', 'video.publishDates.date'), 'ASC]] 
Смежные вопросы