Ember数据 - 仅发送具有值的属性

时间:2017-07-28 17:07:42

标签: ember.js ember-data

我有一个具有许多属性和某些关联的模型。他们中的大多数可能是也可能不是。 我正在尝试使用此模型作为有效负载进行Ajax调用,并且某些属性可以为null。

我想只发送具有值的属性,而不是null,包括关联。

有可能吗?如果有可能,请告诉我。

export default DS.Model.extend({
      name : DS.attr('string'),
      address : DS.hasMany('address')
 });

2 个答案:

答案 0 :(得分:1)

为此,您应该覆盖序列化程序。如果您使用默认JSONAPISerializer,则正确的位置是serializeAttribute挂钩:

export default DS.JSONAPISerializer.extend({
  serializeAttribute(snapshot, json, key) {
    if(snapshot.attr(key) != null) {
      this._super(...arguments);
    }
  }
});

这适用于属性,而不适用于关系。但这基本上是一样的。

您也可以编写自己的序列化程序。然后,您只需实现serialize挂钩,并编写您想要创建所需JSON的任何代码。

答案 1 :(得分:0)

为了使用具有HATEOAS语义的REST,您的服务器应该支持http PATCH方法。当Ember知道服务器上已存在记录时,it will send a PATCH message仅包含设置了dirty标志的属性。如果服务器上不存在记录,则Ember将发送POST而不是PATCH。您还可以覆盖在methodForRequest

中实施JSONAPIAdapter所使用的方法

如果这是新记录而非更新,您在问题中并不清楚。