2017-08-17 191 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

谢谢!它现在完美运行! :) –