我有一个具有许多属性和某些关联的模型。他们中的大多数可能是也可能不是。 我正在尝试使用此模型作为有效负载进行Ajax调用,并且某些属性可以为null。
我想只发送具有值的属性,而不是null,包括关联。
有可能吗?如果有可能,请告诉我。
export default DS.Model.extend({
name : DS.attr('string'),
address : DS.hasMany('address')
});
答案 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
所使用的方法
如果这是新记录而非更新,您在问题中并不清楚。