我正在使用Backand爲我的Angular應用程序提供數據庫和REST api。
我正在研究用戶對複雜對象進行編輯的功能,然後應該對數據庫進行更新。夠簡單的......
物體看起來有點像這樣:
obj = {
id: 1, // assigned by the db
name: "My List",
tasks: [
{ id: 1, desc: "Task 1" },
{ id: 2, desc: "Task 2" },
...
]
}
對於更新($ HTTP PUT)電話,我想用params: { deep: true }
作爲快捷方式,以儘量減少代碼和$http
電話。
此刻的問題是,當PUT命令更新數據庫中的「主」對象時,編輯的「子」對象不會更新,而是作爲新的子對象追加。
舉例來說,如果我嘗試更新主機和子女物體在同一電話:
$http({
method: 'PUT',
url: baseUrl + 'lists/' + list.id,
params: {
deep: true
},
data: {
id: 1,
name: "My To Do List",
tasks: [
{ id: 1, desc: "New Description for Task 1" },
{ id: 2, desc: "New Description for Task 2" }
]
}
}).then(....);
數據庫無法更新子對象,其追加他們。下面是生成的對象是如何在數據庫:
list = {
id: 1,
name: "My To Do List", // Updated correctly
tasks: [
{ id: 1, desc: "Task 1" },
{ id: 2, desc: "Task 2" },
{ id: 3, desc: "New Description for task 1" }, // Added not updated
{ id: 4, desc: "New Description for task 2" } // Added not updated
]
}
我已經確定了子對象id
s爲正確。
有什麼辦法可以簡單地做到這一點,或者我是否已經在多個階段辭職? deep = true
甚至可以使用PUT? Backand docs沒有提到它。