を使用してBackandで複雑なオブジェクトを更新Backandを使用してAngularアプリにデータベースとREST APIを提供しています。
私はユーザーが複雑なオブジェクトを編集する機能を開発しています。複雑なオブジェクトはデータベース上で更新する必要があります。
オブジェクトはビット次のようになり、十分に簡単...:アップデート($ HTTP PUT)の呼び出しについて
obj = {
id: 1, // assigned by the db
name: "My List",
tasks: [
{ id: 1, desc: "Task 1" },
{ id: 2, desc: "Task 2" },
...
]
}
、私はコードと$http
呼び出しを最小限に抑えるためのショートカットとしてparams: { deep: true }
を使用したいと思います。
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には言及していません。あなたはBackandからオブジェクトを「GET」とき