Ember 数据 - 只发送有值的属性
Ember data - send only properties that have values
我有一个具有许多属性和特定关联的模型。其中大多数可能为空,也可能不为空。
我正在尝试使用此模型作为有效载荷进行 Ajax 调用,并且某些属性可以为空。
我只想发送有值的属性,而不是 null,包括关联。
可能吗?如果可能,请告诉我。
export default DS.Model.extend({
name : DS.attr('string'),
address : DS.hasMany('address')
});
为了将 REST 与 HATEOAS semantics, your server should support the http PATCH method. When Ember knows that a record already exists on the server, it will send a PATCH message 一起使用,并且只有设置了 dirty
标志的属性。如果服务器上不存在记录,则 Ember 将发送 POST 而不是 PATCH。您还可以覆盖通过在 JSONAPIAdapter
中实现 methodForRequest
使用的方法
如果这是一条新记录而不是更新,您在问题中不清楚。
为此,您应该重写您的序列化程序。如果你使用默认的 JSONAPISerializer
正确的地方是 serializeAttribute
挂钩:
export default DS.JSONAPISerializer.extend({
serializeAttribute(snapshot, json, key) {
if(snapshot.attr(key) != null) {
this._super(...arguments);
}
}
});
这适用于属性,不适用于关系。不过这基本上是一样的。
您也可以编写自己的序列化程序。然后你只需实现 serialize
钩子,并编写你想要创建的任何代码 JSON。
我有一个具有许多属性和特定关联的模型。其中大多数可能为空,也可能不为空。 我正在尝试使用此模型作为有效载荷进行 Ajax 调用,并且某些属性可以为空。
我只想发送有值的属性,而不是 null,包括关联。
可能吗?如果可能,请告诉我。
export default DS.Model.extend({
name : DS.attr('string'),
address : DS.hasMany('address')
});
为了将 REST 与 HATEOAS semantics, your server should support the http PATCH method. When Ember knows that a record already exists on the server, it will send a PATCH message 一起使用,并且只有设置了 dirty
标志的属性。如果服务器上不存在记录,则 Ember 将发送 POST 而不是 PATCH。您还可以覆盖通过在 JSONAPIAdapter
methodForRequest
使用的方法
如果这是一条新记录而不是更新,您在问题中不清楚。
为此,您应该重写您的序列化程序。如果你使用默认的 JSONAPISerializer
正确的地方是 serializeAttribute
挂钩:
export default DS.JSONAPISerializer.extend({
serializeAttribute(snapshot, json, key) {
if(snapshot.attr(key) != null) {
this._super(...arguments);
}
}
});
这适用于属性,不适用于关系。不过这基本上是一样的。
您也可以编写自己的序列化程序。然后你只需实现 serialize
钩子,并编写你想要创建的任何代码 JSON。