我正在尝试使用 Sequelize 执行以下查询:
db.Post.findAll({
include: [
{
model: db.User,
as: 'Boosters',
where: {id: {[Op.in]: a_set_of_ids }}
},
{
model: db.Assessment,
as: 'PostAssessments',
where: {UserId: {[Op.in]: another_set_of_ids}}
}
],
attributes: [[db.sequelize.fn('AVG', db.sequelize.col('Assessments.rating')), 'average']],
where: {
average: 1
},
group: ['id'],
limit: 20
})
Run Code Online (Sandbox Code Playgroud)
但是我遇到了这个错误:“ER_BAD_FIELD_ERROR”。“字段列表”中的未知列“Assessments.rating”,尽管我在数据库中有“Assessments”表,而“rating”是该表中的一列。
我的 Post 模型如下所示:
const Post = sequelize.define('Post', {
title: DataTypes.TEXT('long'),
description: DataTypes.TEXT('long'),
body: DataTypes.TEXT('long')
}, {
timestamps: false
});
Post.associate = function (models) {
models.Post.belongsToMany(models.User, {as: 'Boosters', through: 'UserPostBoosts' });
models.Post.hasMany(models.Assessment, {as: 'PostAssessments'});
};
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?