Проблема в том, что вы забыли добавить функцию обратного вызова при вызове update()
.Давайте внимательнее посмотрим на эти две строки кода:
firebase.database().ref().update(updates);
alert("You blog posted successfully!");
Легко подумать, что если вызов функции update()
возвращает, это признак того, что обновление успешно завершено.Но это не так.Для того чтобы API-интерфейс Firebase Javascript мог взаимодействовать с базой данных Firebase, ему необходимо отправить HTTP-запрос, а в JavaScript это можно сделать только асинхронно.
В документации по Firebase API функция сигнатура для update()
равна update(values, onComplete)
, которая затем переходит в состояние , возвращает firebase.Promise, содержащий void .
Это означает, что вызов update()
возвращаетдо того, как обновление действительно произошло.Чтобы выполнить действие, когда обновление действительно происходит, вам нужно либо предоставить функцию обратного вызова для параметра onComplete
, либо использовать Promise API, который является значением, возвращаемым update()
.
Пример использования Promise API
firebase.database().ref().update(updates).then(function() {
alert("You blog posted successfully!");
}, function(error) {
alert("Oops, something went wrong!" + error);
});