2017-07-28 12 views
0

我有一個包含許多屬性和特定關聯的模型。他們中的大多數可能會或可能不會爲空。 我正在嘗試使用此模型作爲有效內容進行Ajax調用,並且某些屬性可以爲null。Ember數據 - 只發送具有值的屬性

我想只發送具有值且不爲空的屬性,包括關聯。

可能嗎?請讓我知道是否有可能。

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

你是如何進行Ajax調用的? – nem035

+0

我只是在做model.save()和使用jsonapiadapter – Anusha

回答

0

爲此,您應覆蓋您的序列化程序。如果您使用默認JSONAPISerializer正確的地方是serializeAttribute鉤:

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

這將爲屬性,沒有關係的工作。但是,這基本上是相同的。

您也可以編寫自己的序列化程序。然後,您只需實現serialize掛鉤,然後編寫您想要創建所需JSON的任何代碼。

0

爲了使用REST與HATEOAS語義,您的服務器應支持HTTP PATCH方法。當Ember知道服務器上已存在一條記錄時,it will send a PATCH message只有設置了dirty標誌的屬性。如果服務器上不存在記錄,則Ember將發送POST而不是PATCH。您也可以覆蓋執行methodForRequest時使用的方法JSONAPIAdapter

您不清楚您的問題是否這是新記錄而不是更新。

+0

我真的很抱歉。這是一個新紀錄。我沒有補丁問題,因爲補丁工作正常。在發佈期間,甚至是空值。你認爲哪一個更好?在ui或服務器中處理這個問題?如果用戶界面,我該怎麼做? – Anusha

+0

methodForRequest當前被禁用。 https://www.emberjs.com/blog/2016/11/30/ember-2-10-released.html https://github.com/emberjs/data/pull/4686 – kumkanillam

+0

噢好吧。有沒有其他方法可以實現這一目標? – Anusha