Estoy luchando para completar el siguiente código:
const myCollection = collection(db, 'myCollection'); const mycollectionQuery = query(myCollection, where("field1", "==", "xyz")); myCollectionSnapshot.forEach((doc) => { deleteDoc(?); }); Se agradecería mucho recibir consejos sobre qué proporcionar dentro de la llamada deleteDoc . Estaba bastante seguro de que sería doc.id , pero esto devuelve el mensaje de error "No se puede usar el operador 'in' para buscar '_delegate' en undefined"
En V9, el método deleteDoc() toma una DocumentReference, como se documenta aquí .
Como puede ver en la documentación de su forEach() , la variable doc será una QueryDocumentSnapshot, que es una especialización de DocumentSnapshot. Significa que, si desea recuperar DocumentReference para su doc , solo necesita hacer referencia a él a través de doc.ref .
En otras palabras, para eliminar el documento, deberá hacer esto:
myCollectionSnapshot.forEach((doc) => { deleteDoc(doc.ref); });Así es como elimina un documento de Cloud Firestore:
deleteDoc(doc(db, "reference"))Entonces, el código completo es:
const myCollection = collection(db, 'myCollection'); const mycollectionQuery = query(myCollection, where("field1", "==", "xyz")); myCollectionSnapshot.forEach((doc) => { deleteDoc(doc(db, doc.ref)); });