Benci serius dengan yang satu ini. Saya mencoba menghapus catatan bersarang di dalam koleksi "anak-anak".

"todaysEvents" adalah peta (di dalam koleksi anak) dan saya menargetkan penghapusan salah satu pasangan kunci/nilai (event.id). Saya telah memberikan semua izin dan ketika saya menjalankannya, itu mengembalikan bahwa dokumen itu berhasil dihapus namun sebenarnya belum dihapus karena saya masih bisa melihatnya di DB. Apakah ada sesuatu yang istimewa dengan peta yang perlu saya lakukan sebelum menghapus? Saya merasa ini harus bekerja dengan lancar ...

FIRESTORE.db
    .collection("kids")
    .doc(event.kidId)
    .collection("todaysEvents")
    .doc(event.id)
    .delete()
    .then(data => {
      console.log("Document successfully deleted!", data);
    })
    .catch(error => {
      console.error("Error removing document: ", error);
    });

enter image description here

0
Olivia 18 Mei 2021, 20:39

1 menjawab

Jawaban Terbaik

Firestore adalah Database Toko Dokumen. Operasi yang tersedia untuk Anda adalah menemukan/membaca, membuat, memperbarui, dan menghapus dokumen individu dan SELURUH (pikirkan: objek JSON) sekaligus.

Tidak ada API untuk menghapus hanya bidang dalam dokumen yang ada. Sebaliknya, Anda perlu membaca dokumen (objek JSON), memodifikasi objek (misalnya menghapus elemen dari dokumen), dan kemudian menulis dokumen kembali ke Firestore.

Jadi dalam contoh Anda, Anda akan melakukan sesuatu seperti (kode semu di bawah):

const removeEventId = async (kidId, todayEventsId) => {
  try {
    // fetch the "kids" document
    let docRef = FIRESTORE.db.collection("kids").doc(kidId);
    let docSnap = await docRef.get();
    let docData = docSnap.data();

    // remove the element that we no longer want in the document
    delete docData.todaysEvents[todaysEventId];

    // update the document in Firestore
    await docRef.update(docData);
    console.log(`Document updated with ${todaysEventId} removed!`, docData);
  } catch (ex) {
      console.error(`EXCEPTION while removing ${todaysEventId}:`, ex);
  }
}
1
Greg Fenton 18 Mei 2021, 18:10