javascript - Sequelize 计数关联条目与单独的

标签 javascript postgresql sequelize.js sequelize-typescript

我正在尝试使用我的包含中的单独属性来计算关联条目以提高性能(没有它,它需要 5 秒的请求)。但我收到以下错误:
"message": "缺少表 "likedPosts"的 FROM 子句条目"
对不起,英语不好,这不是我的第一次。我希望你能理解并帮助我。
我的代码:

@Query((returns) => [Post], {
  nullable: true
})
async getAllFeedPostsByUserId(@Arg('user_id') user_id: number): Promise < Post[] > {
  const result = await Post.findAll({
    attributes: {
      include: [
        [Sequelize.fn("COUNT", Sequelize.col("likedPosts.feed_post")), "likesAmount"]
      ]
    },
    include: [{
      model: LikedPosts,
      as: 'likedPosts',
      attributes: [],
      separate: true,

    }, ]
  });

  return result;
}

最佳答案

我认为 group 是必须计算条目的。

Post.findAll({
    attributes: { 
        include: [[Sequelize.fn('COUNT', Sequelize.col('likedPosts.feed_post')), 'likesAmount']] 
    }, 

    include: [{
        model: LikedPosts, 
        attributes: []
    }],
    group: ['likedPosts.feed_post'] // groupBy is necessary else it will generate only 1 record with all rows count
})
我可以看到 seperate separate desc
详细说明:默认情况下,要检索相关模型实例,Sequelize 将使用 SQL JOIN。通过启用单独,Sequelize 将为每个关联的模型执行单独的查询,并在代码中连接结果文档(而不是让数据库执行连接)。

关于javascript - Sequelize 计数关联条目与单独的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63620913/

相关文章:

javascript - 如何使用requirejs保证javascript中的依赖类

sql - 如何获取组中 'middle' 值的平均值?

node.js - Sequelize [ES6] 分离文件循环引用

node.js - 如何使用循环发送电子邮件并更新每条记录?

node.js - set/add方法不是sequelize Node js的函数

javascript - Angular JS 将 html 发送到数据库

javascript - 找不到类 'NunoMaduro\Collision\Adapters\Laravel\CollisionServiceProvider'

javascript - 从 Office/Outlook 加载项粘贴超链接

sql - PostgreSQL - 基于列数据的减法简化查询

php - MYSQL/PHP/Postgis : Check if a coordinate is within the radius of another coordinate( little twist )