使用$ http PUT在Backand上更新复杂对象

时间:2016-04-08 13:17:39

标签: angularjs angular-http backand

我正在使用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没有提到它。

0 个答案:

没有答案