Как прокомментировал Чарли, onAuthStateChanged
запускается асинхронно.Это означает, что ваш вызов set()
в данный момент выполняется до того, как установлен userUID
.
Это проще всего увидеть, добавив несколько удачно расположенных операторов журнала:
console.log("Starting to listen to auth state");
firebase.auth().onAuthStateChanged(function (user) {
console.log("Got auth state");
});
console.log("Started to listen to auth state");
Когда вызапустить этот код, вывод:
Начало прослушивания состояния авторизации
Начало прослушивания состояния аутентификации
Получено состояние аутентификации
Это, вероятно, не то, что вы ожидали, но это полностью объясняет, почему вы получаете undefined
в базе данных.К тому времени, когда вы запустите database.ref('users/' + userUID).set({...
, userUID
еще не будет установлен.
Исправление простое: переместите код, который нуждается в userUID
, в метод, который его получает:
var userUID;
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
userUID = user.uid;
database.ref('users/' + userUID).set({
Name: name,
Email: email,
Password: password,
Industry: industry,
Birthday: birthday
});
}
});