Sequelize.js 继续子查询产品和评级

Sequelize.js 继续子查询产品和评级,sequelize.js,Sequelize.js,我有密码。我想得到:产品清单,订单数量,平均评分,评分数量。因此,我只得到一个产品- Product.findAll({ offset, limit: 15, order: [["amount", "desc"]], include: [ { model: models.Rating, attributes: [ [ sequelize.fn

我有密码。我想得到:产品清单,订单数量,平均评分,评分数量。因此,我只得到一个产品-

Product.findAll({
      offset,
      limit: 15,
      order: [["amount", "desc"]],
      include: [
        {
          model: models.Rating,
          attributes: [
            [
              sequelize.fn("avg", sequelize.col("ratingValue")),
              "averageRating"
            ],
            [
              sequelize.fn("count", sequelize.col("ratingValue")),
              "amountOfRatings"
            ]
          ]
        }
      ]
    }).then(products => products));
如果我删除:

include: [
            {
              model: models.Rating,
              attributes: [
                [
                  sequelize.fn("avg", sequelize.col("ratingValue")),
                  "averageRating"
                ],
                [
                  sequelize.fn("count", sequelize.col("ratingValue")),
                  "amountOfRatings"
                ]
              ]
            }
          ]
我得到了我所需要的一切,没有评级。 完整项目的url:;
谢谢你的回答

问题似乎是sequelize默认情况下会进行内部连接。您需要一个等效的左外部联接,这样即使没有关联的评级,也会返回产品行

通过在include语句中指定required:false,可以更改默认行为:

      include: [
        {
          model: models.Rating,
          required: false,
          attributes: [
            [
              sequelize.fn("avg", sequelize.col("ratingValue")),
              "averageRating"
            ],
            [
              sequelize.fn("count", sequelize.col("ratingValue")),
              "amountOfRatings"
            ]
          ]
        }
      ]

sequelize中的sql查询:选择product.*,ratings.id作为ratings.id,avgratingValue作为ratings.Averaging,countratingValue作为ratings.AmountFratings,从选择product.id,product.price,product.title,product.amount,product.description,product.picture,product.createdAt,product.updatedAt FROM products AS product ORDER BY product.amount DESC LIMIT 0,15 AS product LEFT OUTER JOIN ratings AS ratings ON product.id=ratings.productId ORDER BY product.amount DESC;我是用sql编写查询的,它是有效的:使用omvapeshop;选择products.*,从productId=products.id的评级中选择avgratingValue作为平均值,从productId=products.id的评级中选择countratingValue作为产品左侧外部连接评级的数量。id=ratings.productId按产品排序。数量描述限制0,15;我讨厌sequelizealways需要一点调整,但一开始的主要问题是,即使没有评级,也会有左侧外部连接返回产品。问题不在连接中,我是舒尔