我正在使用Backand为我的Angular应用程序提供数据库和REST API。
我正在研究一种能够让用户对复杂对象进行编辑的功能,然后应该在数据库上进行更新。直截了当......
该对象看起来有点像这样:
#define VOID_FUNC(name) \
void name() {\
Do task x;\
ClassB b;\
b.name();\
Do task y;\
}
class A
{
VOID_FUNC(Do1)
VOID_FUNC(Do2)
};
对于更新($ http PUT)电话,我想使用obj = {
id: 1, // assigned by the db
name: "My List",
tasks: [
{ id: 1, desc: "Task 1" },
{ id: 2, desc: "Task 2" },
...
]
}
作为最小化代码和params: { deep: true }
电话的快捷方式。
目前的问题是,当PUT命令更新" master"数据库中的对象,编辑过的" child"对象不会更新,但会作为新的子对象附加。
例如,如果我尝试在一次调用中更新主对象:
$http
数据库没有更新子对象,它会附加它们。以下是生成的对象在数据库中的位置:
$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
甚至可以与PUT一起使用吗? Backand docs没有提到它。