ลบเอกสารใน firestore เมื่อค่าของเอกสารตรงกัน

ฉันมีเอกสารมากมายอยู่ในคอลเลคชันในร้านดับเพลิง สิ่งที่ฉันต้องการเก็บถาวรคือการค้นหาเอกสารตามคุณสมบัติการประทับเวลา หลังจากนั้นฉันต้องการลบเอกสารนี้ทุกประการ

รหัสของฉันมีลักษณะเช่นนี้:

firebase.firestore().collection("chatrooms").doc(`${chatId}`).collection(`${chatId}`).where("timestamp", "==", timekey).get().then((QuerySnapshot) => {
                if (!QuerySnapshot.empty) {
                    QuerySnapshot.forEach((doc)=>{
                        console.log(doc.data().value)
                    });
                } else {
                    // doc.data() will be undefined in this case
                    console.log("No such document!");
                }
            });

ยังไม่ได้ลบอะไรเลย แต่จะส่งคืนมูลค่าของเอกสารที่พบในคอลเลกชันของฉันเท่านั้น เพื่อที่ฉันจะได้ดูว่าการเรียก .where() ใช้งานได้หรือไม่ ฉันประสบปัญหาในการรวม .where() นี้เข้ากับ .delete() และฉันไม่แน่ใจด้วยซ้ำว่าจะเป็นไปได้หรือไม่ ไม่มีใครมีความคิดใด ๆ ว่าจะบรรลุภารกิจนี้ได้อย่างไร?


person Kubaghetto the fresh Testobun    schedule 19.05.2021    source แหล่งที่มา


คำตอบ (1)


ฉันไม่เห็น .delete() ในรหัสของคุณ นอกจากนี้คุณไม่สามารถรวม .delete() และ .where() ได้ คุณต้องมีรหัสเอกสารหรือข้อมูลอ้างอิง คุณสามารถลองสิ่งนี้:

firebase.firestore().collection("chatrooms").doc(chatId).collection(chatId).where("timestamp", "==", timekey).get().then((QuerySnapshot) => {
  if (!QuerySnapshot.empty) {
    const deleteDocs = []
    QuerySnapshot.forEach((doc)=>{
      console.log(doc.data().value)
      deleteDocs.push(doc.ref.delete())
    });
    Promise.all(deleteDocs).then(() => {
      console.log("Docs delete")
    }).catch(e => console.log(e))

  } else {
    // doc.data() will be undefined in this case
    console.log("No such document!");
  }
});

PS: คุณไม่จำเป็นต้องใช้ Template Literals [${} สิ่ง] หากคุณมีตัวแปรเพียงตัวเดียว คุณสามารถส่ง var ได้โดยตรงเป็น .doc(chatId)

person Dharmaraj    schedule 19.05.2021
comment
ไม่มีอะไรจะเพิ่มเติมในความคิดเห็นนี้ คำตอบที่สมบูรณ์แบบและคำอธิบายที่สมบูรณ์แบบ ขอบคุณ! - person Kubaghetto the fresh Testobun; 20.05.2021