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

标签 node.js sequelize.js

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

相关文章:

mysql - Sequelize association 无法处理我的代码,请

postgresql - Sequelize 验证电子邮件,失败并返回空字符串

mysql - Sequelize - 匹配 mySQL 数据库中给定实体的所有记录

javascript - 添加和新列/属性以 Sequelize 模型

node.js - 在 webOS 项目上集成 C++

javascript - 简单的 NodeJS/Express 单元测试

node.js - elasticsearch js更新索引

regex - Mongoose SchemaString#match 接收 TypeError

javascript - 请勿跟踪 Express 应用程序中的实现情况

node.js - Sequelize 模型文件中的外部字段引用