Di Firestore, saat Anda menghapus dokumen, Anda dapat menentukan kondisi seperti { ada: benar }, untuk menghindari penghapusan dokumen jika tidak ada.

Dalam skenario bersamaan, ada kemungkinan bahwa kami hanya ingin menambahkan dokumen ke subkoleksi jika dokumen induk ada.

Misalnya, bayangkan struktur NoSql berikut:

   -comment (doc)
       /likes (subcollection created when the first like is given)
          -like1
          -like2
          ...

Apakah mungkin untuk melakukan sesuatu seperti

likeRef.create(data, { parent_exists: true });

??

Apakah satu-satunya cara untuk menangani situasi ini dengan Transaksi (membaca dokumen induk, dan membuat kesalahan saat .exists() salah)?

Saya takut dengan situasi seperti ini karena jika sub-koleksi dibuat pada saat yang sama dengan dokumen penampung dihapus, mungkin ada "entitas" yatim piatu dalam database yang bahkan dapat merusak UI jika tidak disiapkan untuk ini. kasus ekstrim.

1
Victor Molina 10 Januari 2022, 04:53

1 menjawab

Jawaban Terbaik

Ini tidak mungkin sebagai operasi tunggal di Firestore.

Satu-satunya cara untuk melakukannya adalah dengan memulai transaksi, lalu get() dokumen induk di dalam transaksi, dan tambahkan dokumen ke subkoleksi jika induknya ada.

1
Frank van Puffelen 10 Januari 2022, 04:55