Sequelize:使用Where语句的自定义方法

时间:2017-03-29 22:22:56

标签: javascript sequelize.js

我有两个模型,User模型和Event模型。用户可以拥有许多事件。

我还在学习Sequelize,我想知道是否可以像自定义方法那样轻松地创建即将发生的事件(date列),这样我就能做到像

这样的事情

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

我来自Laravel和Eloquent,这在那里很容易实现,但我很想在Sequelize中做到这一点,文档对我来说仍然有点混乱。

感谢您的提示:)

1 个答案:

答案 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