gpt4 book ai didi

node.js - 字段列表中的未知列 Sequelize

转载 作者:行者123 更新时间:2023-12-03 12:10:57 25 4
gpt4 key购买 nike

我正在尝试使用 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
})

但是我遇到了这个错误:“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'});
};

我究竟做错了什么?

最佳答案

当我们在包含关联模型的查找查询中存在限制时,似乎这个问题就会出现(当我们从查询中删除限制时,上述错误不会出现)。为了解决这个问题,我们可以将一个选项 subQuery: false 传递给 find。 ( https://github.com/sequelize/sequelize/issues/4146 )

如果有人遇到同样的问题,这是正确的查询:

db.Post.findAll({
subQuery: false,
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}}
}
],
having: db.sequelize.where(db.sequelize.fn('AVG', db.sequelize.col('PostAssessments.rating')), {
[Op.eq]: 1,
}),
limit: 20,
offset: 2,
group: ['Post.id', 'Boosters.id', 'PostAssessments.id']
})

关于node.js - 字段列表中的未知列 Sequelize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50456128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com