У меня есть метод, который отправляет запрос на удаление в мою коллекцию Firebase. Я хочу, чтобы страница перезагружалась после того, как запрос на удаление прошел, и документ был удален. Как и сейчас, страница перезагружается немедленно, и документ не удаляется, но он работает нормально, если я удаляю часть кода перезагрузки.
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()
)
}
Каждый вызов delete()
является асинхронным, поэтому вам нужно выполнить все из них. Решение для этого состоит в том, чтобы использовать Promise.all
для возвращаемых значений, которые вы получаете от 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()
)
}
Попробуйте реализовать doc.ref.delete().then(window.location.reload())