我必須通過DS.store處理來自外部api的HTTP方法(創建和更新)。服務器期望創建方法的其他字段,而不是更新方法。例如:對於如何使一個Ember數據模型適合多種形式?
POST預期PARAMS在JSON:
{
"name": "string",
"email": "string",
"login": "string",
"password": "string",
}
預計爲PUT方法PARAMS:
{
"name": "string",
"subdomain": "string",
"person": "string",
}
顯然,我有其他形式的這些行動,但DS.store通吃請求DS.model中的字段。我的模型:
export default DS.Model.extend({
login: DS.attr('string'),
password: DS.attr('string'),
name: DS.attr('string'),
subdomain: DS.attr('string'),
email: DS.attr('string'),
person: DS.attr('string'),
});
因此,例如,POST請求如下所示:
{
"name": "somethingName",
"email": "[email protected]",
"login": "login",
"password": "passw",
"subdomain": null,
"person": null
}
甚至,如果不期望鍵有null或未定義的值,我的服務器返回400(未識別參數 「subdomian」 ,「人」)。 不幸的是,我沒有訪問服務器,所以我必須傳遞給服務器只有預期的參數。我也試過在串行器是這樣的:
attrs: {
person: { serialize: false },
subdomain: { serialize: false },
}
但自然也被創造PUT請求錯誤...... 有PARAMS包含在我的HTML表單,或刪除參數,可以具有空的東西辦法只能通過/請求到服務器之前未定義的值?我知道,我可以使用除DS.store之外的其他東西,但我希望在客戶端和服務器之間只有一箇中間人使用清晰的代碼。
必須嘗試使自己的適配器? –
謝謝,我創建了新的適配器,並更改了ajax方法。 –
我已經把它作爲答案,以便其他有類似的問題可以參考正確的地方。 –