如何通过sequelize中的聚合函数进行排序

Mat*_*nry 5 mysql sql orm sequelize.js

在将旧的PHP应用程序功能转换为Node和Sequelize时,我感觉自己仿佛碰到了一堵砖墙.也许我正在接近ORM可以做的极限,但只是想在我放弃之前询问.

让我们想象一下三个表:Video,Task,PublishDate.

该应用程序要求a Video可能有多个PublishDates和多个Tasks.该Task旨意有因通过查看最小的计算日期VideoPublishDate秒.

因此,如果Video有两个PublishDate2015-12-012015-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
})
Run Code Online (Sandbox Code Playgroud)

我并不鼓励我朝着正确的方向前进,因为即使没有订单条款,这种尝试也只会返回一条记录.尽管如此,这感觉就像我一直都是最接近的一样,而且我缺少一些可以使这成为可能的信息或语法.

这是我第一次涉足ORM世界,所以如果有一些我想念的简单,我会道歉.我尽力了解Google上的文档和其他问题,但到目前为止还没有运气.

Ido*_*o.S 4

您需要使用该功能进行订购。你应该试试:

order : [['video','ASC'],[sequelize.fn('min', 'video.publishDates.date'), 'ASC']]
Run Code Online (Sandbox Code Playgroud)