Я пытаюсь добавить используемый UID в базу данных в реальном времени? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь добавить используемый UID в базу данных в реальном времени, но когда я это делаю, UID возвращается определенным, и я не уверен, почему это так.

Вот мой JS

    var userUID;

    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            userUID = user.uid;
        } else {}
    });


    //Creating the Database for the Users using realtime mf (SAVE THE DATABSE INFO)
    database.ref('users/' + userUID).set({
        Name: name,
        Email: email,
        Password: password,
        Industry: industry, 
        Birthday: birthday
    });

и вот что выводится в базе данных в реальном времени

Here is the output

Спасибо

1 Ответ

0 голосов
/ 11 декабря 2018

Как прокомментировал Чарли, 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
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...