2015-06-13 70 views
3

我覺得自己好像碰到了磚牆,同時將舊的PHP應用程序功能轉換爲Node和Sequelize。也許我正在接近ORM能做的限制,但只是在我放棄之前想問一下。讓我們想象三個表格:Video,Task,PublishDate如何通過聚合函數在次序中排序

該應用要求Video可能有多個PublishDate和多個Task s。 Task s的截止日期將通過查看Video的最小值PublishDate s來計算。

因此,如果Video2015-12-012015-08-15 2分PublishDate的,我們會把使用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

您需要使用該功能進行訂購。 您應該嘗試:

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