sequelize中间表查询
时间: 2023-09-01 15:06:22 浏览: 113
Sequelize 中间表查询可以通过使用 `through` 选项来实现。假设有三个表 `User`、`Group` 和 `UserGroup`(中间表),其中 `UserGroup` 表用于存储用户和组之间的关系,可以使用以下代码进行查询:
```javascript
const User = sequelize.define('user', {...});
const Group = sequelize.define('group', {...});
// 定义中间表
const UserGroup = sequelize.define('user_group', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
}
});
// 定义 User 和 Group 的关系
User.belongsToMany(Group, { through: UserGroup });
Group.belongsToMany(User, { through: UserGroup });
// 查询用户所在的组
const user = await User.findOne({ where: { id: 1 } });
const groups = await user.getGroups();
console.log(groups);
```
在上面的代码中,`belongsToMany` 方法用于定义 `User` 和 `Group` 之间的关系,`through` 选项用于指定中间表的模型。然后,可以使用 `getGroups()` 方法查询用户所在的组。
如果您需要在查询中间表时添加条件,可以在 `get()` 方法中使用 `through` 选项。例如:
```javascript
const user = await User.findOne({ where: { id: 1 } });
const groups = await user.getGroups({
where: { status: 'active' },
through: { where: { role: 'admin' } }
});
console.log(groups);
```
在上面的代码中,`where` 选项用于限制用户所在的组的状态为“active”,`through` 选项用于限制中间表中角色为“admin”的记录。
阅读全文