LIMIT在Sequelize findAll和findAndCountAll中返回错误的行数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LIMIT在Sequelize findAll和findAndCountAll中返回错误的行数相关的知识,希望对你有一定的参考价值。

Model.findAndCountAll({
  where: { Status: 1 },
  attributes: [
    'ID',
    'FirstName',
    'LastName',         
    'Organization'
  ],
  include: [
    {
      model: organization,
      as: 'organizations',
      attributes: ['ID', 'Name'],
      through: { attributes: [] },
      required: false
    },
    {
      model: hobbiesPerEmp,
      as: 'Hobbies', // hasMany hobbies
      attributes: ['ID', 'isMainHobby'],
      include: [
    {
      model: hobbies
          as: hobby, // belongsTo hobbiesPerEmp
          attributes: ['Name'] 
    }
      ],
      required: true
    }
  ],
  raw: false,
  subQuery: false,
  distinct: true,
  limit: 5,
  offset: 0
});

员工模型中的关联为:


model.associate = (models) => {
  model.hasMany(hobbiesPerEmp, ...)
  model.belongsToMany(organization, 
   {
     as: 'organizations',
     through: 'organizationsPerEmp',
     foreignKey: 'ID'
   }
  )
};

当前输出返回:3 rows

预期输出:5 rows

[当我包含hasMany时,似乎存在问题,因为即使我有LIMITsubQuery: false也适用于子查询。

是否可以在主查询上应用LIMIT或任何其他解决方法来实现此目的?

答案

仅在具有hasMany关联的包含道具中指出separate:true

以上是关于LIMIT在Sequelize findAll和findAndCountAll中返回错误的行数的主要内容,如果未能解决你的问题,请参考以下文章

Sequelize - 仅包括找到一个结果

在 Sequelize 中使用 JOIN

Sequelize:在 findAll 中包含连接表属性包括

使用 Sequelize 获取“TypeError:无法读取未定义的属性‘findAll’”

Sequelize findAll 不是函数

sequelize/sequelize-typescript - 带有 HasMany 的 findAll 返回一个对象而不是数组