[英]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.