Di Cloud Firestore ada tiga operasi tulis:
1) tambahkan
2) set
3) pembaruan
Di dokumen dikatakan bahwa menggunakan set(object, {merge: true})
akan menggabungkan objek dengan yang sudah ada.
Hal yang sama terjadi saat Anda menggunakan. update(object)
Jadi, apa bedanya jika ada? Tampaknya aneh bahwa google akan menduplikasi logika.
create
metode dalam API?set
beroperasi pada data berbentuk dokumen, di manaupdate
mengambil jalur bidang dan pasangan nilai. Ini berarti Anda dapat membuat perubahan pada nilai bertingkat yang lebih dalam denganupdate
yang lebih rumitset
. Sebagai contoh:set({a: {b: {c: true}}}, {merge: true})
vsupdate('a.b.c', true)
.Perbedaan lain (memperluas jawaban Scarygami) antara "set with merge" dan "update", adalah saat bekerja dengan nilai bertingkat.
jika Anda memiliki dokumen yang terstruktur seperti ini:
dan ingin menambahkan
{"friend-uid-3" : true}
menggunakan ini:
db.collection('users').doc('random-id').set({ "friends": { "friend-uid-3": true } },{merge:true})
akan menghasilkan data ini:
Namun
update
menggunakan ini:db.collection('users').doc('random-id').update({ "friends": { "friend-uid-3": true } })
akan menghasilkan data ini:
sumber
{ merge: true }
dengan fungsi pembaruan.update
, Anda dapat menggunakan notasi titik . Perilaku penimpaanupdate
berbeda jika Anda menggunakan / tidak menggunakan notasi titik.Per dokumen: https://firebase.google.com/docs/firestore/manage-data/add-data#update_fields_in_nested_objects
Notasi titik memungkinkan Anda memperbarui satu bidang bertingkat tanpa menimpa bidang bertingkat lainnya. Jika Anda memperbarui bidang bersarang tanpa notasi titik, Anda akan menimpa seluruh bidang peta.
Seperti yang dinyatakan di atas, ini menggantikan seluruh struktur teman.
Ini tidak.
sumber