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" },
...
]
}
params: { deep: true }
更新 ($http PUT) 呼び出しについては、コードと呼び出しを最小限に抑えるためのショートカットとして使用したいと考えてい$http
ます。
現時点での問題は、PUT コマンドがデータベース内の「マスター」オブジェクトを更新している間、編集された「子」オブジェクトは更新されず、新しい子オブジェクトとして追加されることです。
たとえば、マスター オブジェクトと子オブジェクトを 1 回の呼び出しで更新しようとすると、次のようになります。
$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
が正しいことを確認しました。
これを簡潔に行う方法はありますか、それとも複数の段階で行うことに辞任していますか? deep = true
PUT でも動作しますか? Backand docsはそれについて言及していません。