在将旧的PHP应用功能转换为Node和Sequelize时,我觉得好像我碰到了一堵砖墙。也许我已接近ORM可以做的极限,但只是想在我放弃之前询问。
让我们设想三个表:Video
,Task
,PublishDate
。
该应用程序要求Video
可能有多个PublishDate
和多个Task
。 Task
s将通过查看Video
PublishDate
的最小值来计算到期日期。
因此,如果Video
有两个PublishDate
2015-12-01
和2015-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上尽力查看文档和其他问题但到目前为止没有运气。
答案 0 :(得分:2)
您需要使用该功能订购。 你应该试试:
order : [['video','ASC'],[sequelize.fn('min', 'video.publishDates.date'), 'ASC]]