给定用户表和评级表
如何使用 Sequelize 包含子句 从用户表中查询在评级表 中没有任何评级记录的所有用户记录
注意:Sequelize 5.x 版
提前致谢
最佳答案
您可以通过两种方式执行此操作,具体取决于您的模型是如何定义的。
1. 使用 Sequelize Eager Loading 获取所有 Users
和 Ratings
。然后过滤用户没有任何评级的地方。
const users = Users.findAll({
include: [Ratings]
});
const filteredUsers = users.filter(user => user.ratings.length === 0);
2. 从
userIds
表中获取所有 Ratings
,然后使用 userIds
Sequelize operator 将这些 notIn
传递给 where 子句const ratings = Ratings.findAll({
attributes: ["userId"],
group: ["userId"]
});
const userIds = ratings.map(rating => rating.userId);
const filteredUsers = Users.findAll({
where: {
userId: { [Op.notIn]: userIds }
}
});