2017-08-17 1 views
2

Je construis une page où j'affiche une liste d'événements. Chacun des événements se déroule en une ou deux dates consécutives. Le problème est que ces événements devraient être classés à ces dates. J'utilise Sequelize.js.Trier par date une liste avec plusieurs dates

Par exemple: événement1 - les 13 et 14 juillet devrait être affiché avant l'événement2- les 10 et 11 juillet car il est le plus récent.

J'ai deux tables: Events et EventDates avec une relation un-à-plusieurs.

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

    }) 

Ceci ne fera que commander les deux dates d'un événement, mais ne comparera pas les dates des différents événements.

Comment puis-je effectuer l'opération de commande?

modèle EventDates:

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

Et le modèle des événements:

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

} 
}); 

Répondre

2

Dans votre code actuel de votre ordonnons seulement à l'intérieur Eventdates, vous devez commander toute la liste aussi:

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

    }) 
+0

Merci beaucoup! Cela fonctionne parfaitement maintenant! :) –