如何通过续集

时间:2015-06-13 09:02:17

标签: mysql sql orm sequelize.js

在将旧的PHP应用功能转换为Node和Sequelize时,我觉得好像我碰到了一堵砖墙。也许我已接近ORM可以做的极限,但只是想在我放弃之前询问。

让我们设想三个表:VideoTaskPublishDate

该应用程序要求Video可能有多个PublishDate和多个TaskTask s将通过查看Video PublishDate的最小值来计算到期日期。

因此,如果Video有两个PublishDate 2015-12-012015-08-15,我们会使用2015-08-15并执行其他计算得到Task截止日期。

当我尝试按计算的截止日期排序Task时,会出现问题。

我尝试了很多不同的方法。此最新尝试尝试使用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
})

我并不鼓励我朝着正确的方向前进,因为即使没有订单条款,这次尝试也只会返回一条记录。尽管如此,这感觉就像我一整天最接近的一样,而且我错过了一些可能使这成为可能的信息或语法。

这是我第一次涉足ORM世界,所以如果有一些我想念的东西,我会道歉。我在Google上尽力查看文档和其他问题但到目前为止没有运气。

1 个答案:

答案 0 :(得分:2)

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

order : [['video','ASC'],[sequelize.fn('min', 'video.publishDates.date'), 'ASC]]