我有一個包含許多屬性和特定關聯的模型。他們中的大多數可能會或可能不會爲空。 我正在嘗試使用此模型作爲有效內容進行Ajax調用,並且某些屬性可以爲null。Ember數據 - 只發送具有值的屬性
我想只發送具有值且不爲空的屬性,包括關聯。
可能嗎?請讓我知道是否有可能。
export default DS.Model.extend({
name : DS.attr('string'),
address : DS.hasMany('address')
});
我有一個包含許多屬性和特定關聯的模型。他們中的大多數可能會或可能不會爲空。 我正在嘗試使用此模型作爲有效內容進行Ajax調用,並且某些屬性可以爲null。Ember數據 - 只發送具有值的屬性
我想只發送具有值且不爲空的屬性,包括關聯。
可能嗎?請讓我知道是否有可能。
export default DS.Model.extend({
name : DS.attr('string'),
address : DS.hasMany('address')
});
爲此,您應覆蓋您的序列化程序。如果您使用默認JSONAPISerializer
正確的地方是serializeAttribute
鉤:
export default DS.JSONAPISerializer.extend({
serializeAttribute(snapshot, json, key) {
if(snapshot.attr(key) != null) {
this._super(...arguments);
}
}
});
這將爲屬性,沒有關係的工作。但是,這基本上是相同的。
您也可以編寫自己的序列化程序。然後,您只需實現serialize
掛鉤,然後編寫您想要創建所需JSON的任何代碼。
爲了使用REST與HATEOAS語義,您的服務器應支持HTTP PATCH方法。當Ember知道服務器上已存在一條記錄時,it will send a PATCH message只有設置了dirty
標誌的屬性。如果服務器上不存在記錄,則Ember將發送POST而不是PATCH。您也可以覆蓋執行methodForRequest
時使用的方法JSONAPIAdapter
您不清楚您的問題是否這是新記錄而不是更新。
我真的很抱歉。這是一個新紀錄。我沒有補丁問題,因爲補丁工作正常。在發佈期間,甚至是空值。你認爲哪一個更好?在ui或服務器中處理這個問題?如果用戶界面,我該怎麼做? – Anusha
methodForRequest當前被禁用。 https://www.emberjs.com/blog/2016/11/30/ember-2-10-released.html https://github.com/emberjs/data/pull/4686 – kumkanillam
噢好吧。有沒有其他方法可以實現這一目標? – Anusha
你是如何進行Ajax調用的? – nem035
我只是在做model.save()和使用jsonapiadapter – Anusha