Ben Angular uygulaması için veritabanı ve REST api sağlamak için Backand kullanıyorum.
Kullanıcıların daha sonra veritabanında güncelleştirilmesi gereken karmaşık bir nesneyi düzenlemeleri yapabilmeleri için çalışıyorum. Yeterince basit ...
nesne biraz şuna benzer:
obj = {
id: 1, // assigned by the db
name: "My List",
tasks: [
{ id: 1, desc: "Task 1" },
{ id: 2, desc: "Task 2" },
...
]
}
güncelleme çağrısı, ben kod ve $http
çağrıları en aza indirmek için kısayol olarak params: { deep: true }
kullanmak istiyorum (http PUT $) için.
Şu anki sorun, PUT komutunun veritabanındaki "master" nesnesini güncelleştirmesidir, düzenlenmiş "child" nesneleri güncellenmez, ancak yeni alt nesneler olarak eklenir. Örneğin
, ben bir çağrıda ana ve alt nesneleri güncelleştirmeye çalışırsanız:
$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(....);
veritabanı değil güncelleştirme alt nesneler yapar, bu ekler. İşte ortaya çıkan nesne veritabanında nasıl açıklanmıştır: Ben çocuk nesnelerin id
ler doğru olduğundan emin yaptık
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
]
}
.
Bunu kısa ve öz bir şekilde yapmanın bir yolu var mı, yoksa bunu birden çok aşamada yapmaya istekli miyim? deep = true
, PUT ile çalışır mı? Backand docs bundan bahsetmiyor.