Estoy tratando de eliminar un documento de la colección firebase firestore, ¿cómo puedo hacerlo? Intenté algunas cosas pero no tuve éxito. Aquí está mi código.
aquí está el gancho de Firestore
const useFirestore = (somecollection) => { const [docs, setDocs] = useState([]); useEffect (() => { // new collection reference const newcoll = collection(projectFirestore, somecollection); const q = query(newcoll, orderBy('createdAt', 'desc')); const unsub = onSnapshot(q, (snapshot) => { let documents = []; snapshot.forEach(doc => { documents.push({...doc.data(), id: doc.id}) }) setDocs(documents); }); return () => unsub; },[somecollection]); return { docs }; }
el imagegrid donde se muestran todas las imágenes (solo regresan los js sin jsx)
const { docs } = useFirestore('images'); const handleDelete = (e) => { docs.forEach(doc => { deleteDoc(doc); })
ahora, en imagegrid jsx, tengo todas las imágenes cargadas que almacenan el documento en ellas.
así que agregué un botón a cada imagen y quiero que cuando haga clic en el botón se active un handleDelete () que elimine este documento de imagen específico del almacén de incendios
Si está tratando de tener un botón que elimine un solo documento, es probable que NO desee recorrer todos los documentos y llamar a deleteDoc()
.
En cambio, su interfaz de usuario probablemente mostraría cada imagen e incluiría su ID para cada botón. Algo como:
const deleteOneImageDoc = async (docId) => { try { let docRef = doc(myFirestore, `images/${docId}`); await deleteDoc(docRef); } catch (ex) { console.error(`Delete FAILED: ${ex.message}`); throw ex; } }; return <div> docs.map((imgDoc) => { return ( <div key={imgDoc.id}> <img src={imgDoc.url}/> <button onClick={() => deleteOneImageDoc(imgDoc.id)}> delete {imgDoc.id} </button> </div>); }) </div>;