在我的数据库中,我有以下相关表: userslistingsreviews

users 有很多 listings

listings 有很多 reviews

reviews 有一个 value 列,它是0到5之间的一个浮点数 .

我希望能够为用户提供评级,其定义为:

用户拥有 listings 的所有 reviews 的平均值 value .

在Sequelize中,我有这个:

User.findById(userId, {
  include: [
    {
      model: Listing,
      order: [
        [Review, 'updatedAt', 'desc']
      ],
      include: [
        {
          model: Review,
          include: [User]
        }
      ],
    }
  ]
})

这成功地让我:

  • 所有 user 字段

  • 所有 listings 由用户拥有

  • 所有 reviews 为那些 listings

此时我确实有足够的信息来计算 user 平均评分,但这假设我从未对此查询中的 listingsreviews 的数量设置任何限制 . 为了扩展应用程序,我需要限制,因此我必须能够使用聚合函数来计算 listinguser 的平均评级 .

我对Sequelize和SQL很新 . 我怎么能做到这一点?