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

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

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

  1. CREATE TABLE `ututs` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `aem_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  4. `locale` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
  5. `status` int(11) NOT NULL,
  6. `version` int(11) NOT NULL DEFAULT 0,
  7. `metadata` json NOT NULL,
  8. `validated` json NOT NULL,
  9. `created_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  10. `modified_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  11. PRIMARY KEY (`id`)
  12. ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

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

  1. 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进行调用时:

  1. UtutModel.findAll({
  2. attributes: [
  3. Sequelize.fn(`ANY_VALUE`, Sequelize.col(`id`)),
  4. Sequelize.fn(`ANY_VALUE`, Sequelize.col(`aem_id`)),
  5. Sequelize.fn(`ANY_VALUE`, Sequelize.col(`locale`)),
  6. Sequelize.fn(`ANY_VALUE`, Sequelize.col(`status`)),
  7. Sequelize.fn(`MAX`, Sequelize.col(`version`)),
  8. Sequelize.fn(`ANY_VALUE`, Sequelize.col(`metadata`)),
  9. Sequelize.fn(`ANY_VALUE`, Sequelize.col(`validated`)),
  10. Sequelize.fn(`ANY_VALUE`, Sequelize.col(`created_on`)),
  11. Sequelize.fn(`ANY_VALUE`, Sequelize.col(`modified_on`))
  12. ],
  13. group: ['aem_id'],
  14. where: UtutModel.buildWhere(req.query)

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

  1. Utut {
  2. dataValues: {},
  3. _previousDataValues: {},
  4. _changed: {},
  5. _modelOptions: {
  6. timestamps: false,
  7. validate: {},
  8. freezeTableName: false,
  9. underscored: true,
  10. underscoredAll: false,
  11. paranoid: false,
  12. rejectOnEmpty: false,
  13. whereCollection: [Object],
  14. schema: null,
  15. schemaDelimiter: '',
  16. defaultScope: {},
  17. scopes: [],
  18. indexes: [],
  19. name: [Object],
  20. omitNull: false,
  21. tableName: 'ututs',
  22. sequelize: [Object],
  23. hooks: {},
  24. uniqueKeys: {}
  25. },
  26. _options: {
  27. isNewRecord: false,
  28. _schema: null,
  29. _schemaDelimiter: '',
  30. raw: true,
  31. attributes: [Array] },
  32. __eagerlyLoadedAssociations: [],
  33. isNewRecord: false
  34. },

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

  1. 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

暂无答案!

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

相关问题