Javascript sequelize-获取包含模型的平均值

Javascript sequelize-获取包含模型的平均值,javascript,mysql,node.js,sequelize.js,Javascript,Mysql,Node.js,Sequelize.js,我有一个类似于product:{…,ratings:[{rating:3}]}的模式,我想使用sequalize添加属性product.avg_rating使用sequelize 这是我的代码: sequelize.models.product.findAll({ include: [{ model: sequelize.models.rating, as: 'ratings', attributes: { include:

我有一个类似于
product:{…,ratings:[{rating:3}]}
的模式,我想使用sequalize添加属性
product.avg_rating
使用
sequelize

这是我的代码:

sequelize.models.product.findAll({
    include: [{
       model: sequelize.models.rating,
       as: 'ratings', 
       attributes:  {
        include: ['rating',[sequelize.fn('AVG', 'ratings.rating'), 'avg_rating']]
       },
       group: ['rating.rating'],//also tried ratings.rating, and just rating
    }],
 }).then(products=>{...})
但我一直收到这个错误:

在没有分组依据的聚合查询中,选择列表的表达式#1 包含未聚合的列“text_rewriter.languagecomposition.id”; 这与sql\u mode=only\u full\u group\u by不兼容

目标输出:

products: [
   {product: 'product name',
    ...
    ratings: [...],
    avg_rating: 3.7 //THIS AVG IS WHAT I WANT
   },{...}
]
你知道我遗漏了什么吗?我见过很多例子,但没有一个像我发现的那样使用include

sequelize.models.product.findAll({
include: [{
   model: sequelize.models.rating,
   as: 'ratings', 
   attributes:  ['avg_rating'] //this is column name here
}],
}).then(products=>{...})
这将返回:-

products: [
 {product: 'product name',
 ratings: [...],
 rating : { //here all the attributes you wanted, in this case only 'avg_rating' }
 },
 {...}
]
但在使用此功能之前,您必须定义产品表和评级表之间的关系

表:产品id、名称

表:评级有id、评级、产品id


在上述情况下,关系将是“rating.belongsTo(product)或product.hasMay(rating)”

MySQL实现功能依赖性检测。如果启用了
ONLY\u FULL\u GROUP\u BY SQL
模式(默认情况下),MySQL将拒绝select list、
HAVING
条件或
ORDER BY
列表引用未在
GROUP BY
子句中命名或在功能上依赖于它们的非聚合列的查询

该错误与
sql\u模式
有关,您需要在数据库控制台上执行以下命令

SET GLOBAL sql_mode = '';

你解决过这个问题吗?@bob_cobb不,我必须在db电话后解决。