Tengo un método que envía una solicitud de eliminación a mi colección de Firebase. Quiero que la página se vuelva a cargar después de que se haya procesado la solicitud de eliminación y se elimine el documento. Tal como está ahora, la página se recarga inmediatamente y el documento no se elimina, pero funciona bien si elimino la parte de recarga del código.
async deletePost() { database.collection("posts").where("id", "==", this.id).get().then(data => { data.forEach(doc => { doc.ref.delete() }) }).then(() => { M.toast({ classes: "toast-alert", html: "Post deleted" }) }).then( window.location.reload() ) }Cada llamada delete() es asíncrona, por lo que necesita que todas se completen. La solución para esto es usar Promise.all en los valores de retorno que obtienes de delete() :
async deletePost() { return database.collection("posts").where("id", "==", this.id).get().then(data => { const promises = data.docs.map(doc => doc.ref.delete()); return Promise.all(promises); }).then(() => { window.location.reload() ) }