2017-08-17 101 views
2

我在建立一個頁面,顯示事件列表。每個事件發生在一個或兩個連續的日期。問題是這些事件應該按這些日期排序。 我使用Sequelize.js。按日期排序有多個日期的列表

例如: 事件1 - 7月13日和14日應該在7月10日和11日之前顯示,因爲它是最近一次。

我有兩個表:事件和EventDates與一對多的關係。

Event.findAll({ 
     include: [ 
      { model:EventDates, order: [ [ 'date', 'DESC' ]] },     
     ], 

    }) 

這將只命令一個事件的兩個日期,但不會比較不同事件的日期。

如何執行訂單操作?

EventDates型號:

var EventDates= sequelize.define('eventdates', {  
    date: { 
    type: Sequelize.DATE 
    }, 
    availabletickets: { 
    type: Sequelize.INTEGER 
    }, 
}, 
{ 
    freezeTableName: true 
}); 

而且活動模式:

var Event = sequelize.define('event', { 
    title: { 
    type: Sequelize.STRING, 
    }, 
    slug: { 
    type: Sequelize.STRING 
    }, 
    description: { 
    type: Sequelize.STRING 
    }, 
    isDeleted:{ 
    type: Sequelize. BOOLEAN, 
    defaultValue: false 
    }, 

} 
}); 

回答

2

在你的內部Eventdates只訂購您當前的代碼,你要訂購的整個列表太:

Event.findAll({ 
     include: [ 
      { model:EventDates, order: [ [ 'date', 'DESC' ]] },     
     ], 
     order: [[ EventDates , 'date', 'DESC']] 

    }) 
+0

謝謝!它現在完美運行! :) –