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需要一点调整,但一开始的主要问题是,即使没有评级,也会有左侧外部连接返回产品。问题不在连接中,我是舒尔