2017-03-29 8 views
0

私はUserモデルとEventモデルの2つのモデルを持っています。ユーザーは多くのイベントを持つことができます。Sequelize:Whereステートメントを使用したカスタムメソッド

私はまだSequelizeを学んでいますし、それは簡単に私の今後のイベントのgetカスタムメソッド(列date)のように作成することが可能だ場合、私は

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

ような何かを行うことができますように、私は、思ったんだけど

私はLaravelとEloquentから来ています。それはそこを達成するのはかなり簡単でしたが、私はSequelizeでそれをするのが苦労しています。ドキュメントはまだ私にとっては少し混乱しています。あなたはuserId値に依存しないイベントを返すようにしたい場合は

は、モデルを定義する際に、後であなたがModel.<methodName>を呼び出すことができるように、あなたはclassMethodsプロパティを使用することができ、あなたのヒント:)

答えて

1

を感謝しています。この場合、それはそうでなければ、あなたが与えられたユーザの今後のイベントを返したい場合、あなたはまた、パラメータとしてuserIdになるだろうというクラスメソッドを使用することができ、あるいは、あなたができるように、インスタンスメソッドを使用することができます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; 
      }); 
     } 
    } 
}); 

だろうuserInstance.<methodName>

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

のようにそれを使用documentationに関するインスタンスとクラスメソッドをお読みください。

関連する問題