我有两个模型,User
模型和Event
模型。用户可以拥有许多事件。
我还在学习Sequelize,我想知道是否可以像自定义方法那样轻松地创建即将发生的事件(date
列),这样我就能做到像
User.getUpcomingEvents().then(() => {})
我来自Laravel和Eloquent,这在那里很容易实现,但我很想在Sequelize中做到这一点,文档对我来说仍然有点混乱。
感谢您的提示:)
答案 0 :(得分:1)
如果要返回独立于userId
值的事件,则可以在定义模型时使用classMethods
属性,以便稍后可以调用Model.<methodName>
。在这种情况下,它将是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;
});
}
}
});
否则,如果您想要返回给定用户的即将发生的事件,您也可以使用将userId
作为参数的classMethod,或者,您可以使用实例方法,以便您可以像{{1}一样使用它像userInstance.<methodName>
user.getUpcomingEvents()
请阅读有关实例和课程方法的documentation。