按日期排序具有多个日期的列表

时间:2017-08-17 11:19:36

标签: node.js sql-order-by sequelize.js

我正在构建一个显示事件列表的页面。每个事件都在一个或两个连续日期内发生。问题是这些事件应该按这些日期排序。 我使用Sequelize.js。

例如: event1 - 7月13日和14日应该在7月10日和11日的事件2之前显示,因为它是最近的事件。

我有两个表:具有一对多关系的事件和事件日期。

 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
  },

}
});

1 个答案:

答案 0 :(得分:3)

在您当前的代码中,您只在Eventdates中订购,您还必须订购整个列表:

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

    })