Mysql 使用sequelizejs在第二个表上使用条件进行SQL联接
我有以下型号:Mysql 使用sequelizejs在第二个表上使用条件进行SQL联接,mysql,join,sequelize.js,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, }); con
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
});
“一个查询”选项不起作用(它只返回该用户作为参与者,而不是所有参与者),但第一个选项非常有效,谢谢!