如何在属于ToMany中找到所有不属于特定id的内容?



我有以下型号:

const users = sequelize.define('users', { /* definition */ }
const messageGroups = sequelize.define('message_groups', { /* definition */ }

它们是这样关联的:

models.messageGroups.belongsToMany(models.users, {through: 'user_message_groups'})
models.users.belongsToMany(models.messageGroups, {through: 'user_message_groups'})

如何返回不在具有特定id的messageGroup中的用户列表?

例如,假设我的表看起来像这个

用户

id名称
1Foo
2条形图
3Baz

如果将id作为变量传递,一种选择是只使用usersuser_message_groups表。

首先,您需要user_message_groups的模型定义。

const userMessageGroups = sequelize.define('user_message_groups', {
userId: {
type: DataTypes.INTEGER,
allowNull: false
},
messageGroupId: {
type: DataTypes.INTEGER,
allowNull: false
}
});

接下来,在用户和user_message_groups表之间创建一个关联。

models.users.hasMany(models.userMessageGroups);

然后使用独占的LEFT JOIN进行查询。

models.users.findAll({
include: {
model: models.userMessageGroups,
required: false,
where: {
messageGroupId: 1
}
},
where: models.sequelize.literal('`user_message_groups.messageGroupId` IS NULL')
});

相关内容

  • 没有找到相关文章

最新更新