如何从 sequelize join 中删除 hasMany id 属性?

How to remove hasMany id attribute from sequelize join?

我正在尝试以一对多关系加入下面定义的两个 table。许多 ReviewCharacteristics 的一个特征。使用以下 findAll 函数,我试图对 ReviewCharacteristics table 中的值进行平均。我已经验证了应该按预期运行的必要 SQL 命令。 Sequelize 在所选属性中包含 ReviewCharateristic.id,这导致我的分组失败。

有没有一种方法可以仅指定平均值而不在所选属性中包含来自 ReviewCharacteristic table 的 ID?

exports.Characteristic = db.define('characteristic', {
  product_id: {
    type: DataTypes.INTEGER,
    allowNull: false
  },
  name: {
    type: DataTypes.STRING(7),
    allowNull: false
  }
}, { underscored: true });

exports.ReviewCharacteristic = db.define('review_characteristic', {
  value: {
    type: DataTypes.INTEGER,
    allowNull: false
  }
}, { underscored: true });

exports.Characteristic.hasMany(exports.ReviewCharacteristic, { as: 'rc' });
exports.ReviewCharacteristic.belongsTo(exports.Characteristic);
Characteristic.findAll({
  attributes: ['name', 'id'],
  where: {
    product_id: req.query.product_id
  },
  group: 'characteristic.id',
  include: [{
    model: ReviewCharacteristic,
    as: 'rc',
    attributes: [[Sequelize.fn('AVG', Sequelize.col('rc.value')), 'value']],
    required: true
  }]
});

我也试过指定 attributes: ['characteristic.name', 'characteristic.id']

当前:

SELECT 
"characteristic"."name", 
"characteristic"."id", 
"rc"."id" AS "rc.id", 
AVG("rc"."value") AS "rc.value" 
FROM "characteristic" AS "characteristic" 
INNER JOIN "review_characteristic" AS "rc" 
ON "characteristic"."id" = "rc"."characteristic_id" 
WHERE "characteristic"."product_id" = '18078' 
GROUP BY "characteristic"."id";

预计:

SELECT 
"characteristic"."name", 
"characteristic"."id",
AVG("rc"."value") AS "rc.value" 
FROM "characteristic" AS "characteristic" 
INNER JOIN "review_characteristic" AS "rc" 
ON "characteristic"."id" = "rc"."characteristic_id" 
WHERE "characteristic"."product_id" = '18078' 
GROUP BY "characteristic"."id";

如果有人碰巧遇到这个问题并且正在处理同样的问题,这里是我找到的解决方案。

Characteristic.findAll({
  attributes: ['name', 'id', [Sequelize.fn('AVG', Sequelize.col('rc.value')), 'value']],
  where: {
    product_id: req.query.product_id
  },
  group: 'characteristic.id',
  include: [{
    model: ReviewCharacteristic,
    as: 'rc',
    attributes: [],
    required: true
  }]
});

为了在我的例子中停止添加 ReviewCharateristic.id 属性,必须将属性指定为已连接 table 的空数组。