2017-03-29 4 views
0

Ich habe zwei Modelle, ein User Modell und ein Event Modell. Ein Benutzer kann viele Ereignisse haben.Sequelize: Benutzerdefinierte Methode mit Where-Anweisung

Ich lerne immer noch Sequelize und ich frage mich, ob es möglich ist wie eine benutzerdefinierte Methode zu erstellen, die mir leicht die anstehenden Events (Spalte date) erhalten ist, so dass ich so etwas wie

User.getUpcomingEvents().then(() => {})

tun können

Ich komme von Laravel und Eloquent, und das war ziemlich einfach zu erreichen, aber ich versuche es in Sequelize und die Dokumentation ist immer noch ein bisschen verwirrend für mich.

Ihre Tipps schätzen :)

Antwort

1

Wenn Sie Ereignisse unabhängig von der userId Wert zurückgeben möchten, dann können Sie classMethods Eigenschaft verwenden, wenn Modell zu definieren, so dass Sie später Model.<methodName> aufrufen können. In diesem Fall wäre es User.getUpcomingEvents()

let User = sequelize.define('User', { 
    // attributes... 
}, { 
    classMethods: { 
     getUpcomingEvents: function(userId){ 
      return sequelize.models.Event.findAll({ 
       where: { 
        date: { $gt: new Date() }, 
        UserId: userId // optional, if you want to return only events of given user 
       } 
      }).then(events => { 
       return events; 
      }); 
     } 
    } 
}); 

anders sein, wenn Sie bevorstehende Ereignisse von bestimmten Benutzer zurückkehren möchten, können Sie auch Class verwenden, die userId als Parameter bekommen würde, oder können Sie Instanzmethode verwenden, so dass Sie verwenden sie es wie userInstance.<methodName> wie user.getUpcomingEvents()

instanceMethods: { 
    getUpcomingEvents: function() { 
     return this.getEvents({ where: { date: { $gt: new Date() } } }).then(events => { 
      return events; 
     }); 
    } 
} 

Bitte lesen sie die documentation über Instanz und Klassenmethoden.

Verwandte Themen