sequelize有两个模型,一个是 "User",另一个是 "Task",并且在用户模型上设置了一对多关系,即一个用户可以有多个任务,现在要求查询User,并且查询User拥有的Task的数量
时间: 2024-04-15 15:31:46 浏览: 48
你可以使用 Sequelize 的关联查询来实现此功能。首先,确保你在任务模型中设置了外键指向用户模型的主键。然后,在用户模型中定义一对多关系:
```javascript
const User = sequelize.define('User', {
// 用户模型属性
});
const Task = sequelize.define('Task', {
// 任务模型属性
});
User.hasMany(Task, { foreignKey: 'userId' });
Task.belongsTo(User, { foreignKey: 'userId' });
```
接下来,你可以使用 Sequelize 的聚合函数 `sequelize.literal` 和 `sequelize.col` 来查询用户拥有的任务数量:
```javascript
User.findAll({
attributes: {
include: [
[sequelize.literal('(SELECT COUNT(*) FROM Tasks WHERE Tasks.userId = User.id)'), 'taskCount']
]
}
});
```
这将返回一个包含用户信息和任务数量的数组。你可以通过访问 `user.taskCount` 来获取每个用户的任务数量。
希望这可以帮助到你!
阅读全文