簡體   English   中英

SQL JOIN在帶有sequelizejs的第二張表上具有條件

[英]SQL JOIN with condition on second table with sequelizejs

我有以下型號:

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
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM