mysql - 使用sequelizejs 对第二个表进行 SQL JOIN 条件

标签 mysql join sequelize.js

我有以下型号:

const User = sequelize.define('user', {
    name: Sequelize.TEXT,
    avatar: Sequelize.TEXT,
});

const Event = sequelize.define('event', {
    title: Sequelize.STRING,
    description: Sequelize.TEXT,
    timestamp: Sequelize.DATE,
});

const EventUser = sequelize.define('event_user', {});

Event.hasMany(EventUser);
EventUser.belongsTo(User);

因此,EventUser 保存了我特定事件的参与者列表。

我正在尝试查询用户 X 参与的所有事件:

let events = await Event.findAll({
    include: [
        {model: EventUser, include: [{model: User, where: {id: 1}}]}
    ],
});

但它不会获取该事件的其他参与者列表。不知道如何实现这一点,谢谢!

最佳答案

正确的方法是定义用户和事件之间的多对多关系

User.belongsToMany(Event, {through: 'EventUser'});
Event.belongsToMany(User, {through: 'EventUser'});

然后,您可以像这样获取某个用户的所有事件:

User.findById(userId).then(function(user){
    return user.getEvents();
}).then(function(events){
    //here's events
});

或者通过一个查询:

Event.findAll({
    include: [{
        model: User,
        where: {id: userId}
    }]
}).then(function(events){
    //here's events
});

关于mysql - 使用sequelizejs 对第二个表进行 SQL JOIN 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44222492/

相关文章:

mysql - 电子商务数据库中产品组的制作方法

Python从MySQL获取查询,去掉字符串格式

mysql - 我想使用 xampp 将这些数据插入到我的 sql 数据库中。我收到此错误 : #1054 - Unknown column 'victor' in 'field list'

mysql - 用 join 对所有行求和

handlebars.js - 使用 Handlebars 显示来自 sequelize 查询的值

php - Laravel: Eloquent all() 不返回对象数组

mysql - 将行值扩展到单独的行

javascript - 如何在没有循环的情况下加入对象值?

javascript - findAll() 不是 sequelize 中的函数

sequelize.js - 选择来自非禁止用户的消息