将ember-data从2.13迁移到2.14后,当关系模型具有空关系时,请求有效负载不包含hasMany关系

mv1qrgav  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(111)

在ember-data升级后使用ActiveModelSerializer时,当模型没有关系记录时,请求有效负载上的has_many case的值已更改,例如:
第一个
因此,如果用户没有帖子,之前将[]发送到BE,但在ember-data转换到2.14.11后,没有发送键值,例如:(请求有效负载)
之前:

user: { id: 1, post_ids: [] }

之后:

user: { id: 1 }

注意事项:

"active-model-adapter": "2.2.0"
"ember-data": "2.14.11"
0qx6xfy6

0qx6xfy61#

其原因是:https://github.com/emberjs/data/compare/v2.14.3...v2.14.4
解决方法:app/serializers/application.js

import EmbeddedRecordsMixin from 'ember-data/serializers/embedded-records-mixin';
import { ActiveModelSerializer } from 'active-model-adapter';
import { pluralize } from 'ember-inflector';

export default ActiveModelSerializer.extend(EmbeddedRecordsMixin, {
  isNewSerializerAPI: true,

  serializeHasMany(snapshot, model, relation) {
    this._super(...arguments);
    let relationKey = `${pluralize(relation.key.underscore()).slice(0, -1)}_ids`;
    if (relation.kind === 'hasMany' && !model[relationKey]) {
      model[relationKey] = Object.freeze([]);
    }
  }
});

相关问题