sequelize.fn(`any_value`,sequelize.col(`col`));不返回数据

mfuanj7w  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(398)

我有一个 mysql 包含视频库元数据的数据库。我希望能够在ui上对视频的元数据进行更改,然后用较新版本保存新示例,但希望将旧版本存档在数据库中。当我使用 sequelize.findAll 我只想返回最新版本。这是我的数据库模式

CREATE TABLE `ututs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `aem_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `locale` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
  `status` int(11) NOT NULL,
  `version` int(11) NOT NULL DEFAULT 0,
  `metadata` json NOT NULL,
  `validated` json NOT NULL,
  `created_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modified_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

如果我使用 mySQLworkbench ,我可以进行此查询

SELECT ANY_VALUE(id), aem_id, ANY_VALUE(`locale`), ANY_VALUE(status), MAX(version), ANY_VALUE(metadata), ANY_VALUE(validated), ANY_VALUE(created_on), ANY_VALUE(modified_on) FROM ututs AS Utut WHERE Utut.locale = 'en_US' AND Utut.status IN (1, 2) GROUP BY aem_id;

并按预期返回数据。但是,当我尝试使用sequelize进行调用时:

UtutModel.findAll({
      attributes: [
        Sequelize.fn(`ANY_VALUE`, Sequelize.col(`id`)),
        Sequelize.fn(`ANY_VALUE`, Sequelize.col(`aem_id`)),
        Sequelize.fn(`ANY_VALUE`, Sequelize.col(`locale`)),
        Sequelize.fn(`ANY_VALUE`, Sequelize.col(`status`)),
        Sequelize.fn(`MAX`, Sequelize.col(`version`)),
        Sequelize.fn(`ANY_VALUE`, Sequelize.col(`metadata`)),
        Sequelize.fn(`ANY_VALUE`, Sequelize.col(`validated`)),
        Sequelize.fn(`ANY_VALUE`, Sequelize.col(`created_on`)),
        Sequelize.fn(`ANY_VALUE`, Sequelize.col(`modified_on`))
      ],
      group: ['aem_id'],
      where: UtutModel.buildWhere(req.query)

我得到了预期返回的正确条目数,但是它们缺少每列的数据。

Utut {
    dataValues: {},
    _previousDataValues: {},
    _changed: {},
    _modelOptions: { 
        timestamps: false,
        validate: {},
        freezeTableName: false,
        underscored: true,
        underscoredAll: false,
        paranoid: false,
        rejectOnEmpty: false,
        whereCollection: [Object],
        schema: null,
        schemaDelimiter: '',
        defaultScope: {},
        scopes: [],
        indexes: [],
        name: [Object],
        omitNull: false,
        tableName: 'ututs',
        sequelize: [Object],
        hooks: {},
        uniqueKeys: {} 
   },
   _options: { 
      isNewRecord: false,
      _schema: null,
      _schemaDelimiter: '',
      raw: true,
      attributes: [Array] },
   __eagerlyLoadedAssociations: [],
   isNewRecord: false 
},

有没有办法使用 GROUP BY 在sequelize调用中返回我没有使用的数据?
还有,如果我掉了 ANY_VALUE fns,我得到这个错误

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'utut.Utut.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题