Назначить значение из обратного вызова Firebase - PullRequest
0 голосов
/ 19 сентября 2018

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

<script src="https://www.gstatic.com/firebasejs/5.5.0/firebase.js"></script>

var config = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: ""
  };

firebase.initializeApp(config);
database=firebase.database();
var ref = database.ref('test');
var firebaseMsg ='';

ref.on('value',function(snap){
//console.log(snap.val());
firebaseMsg=snap.val();
});

console.log(firebaseMsg);

моя база данных firebase выглядит так:

    {
  "test" : "Hello from my database!"
}

журнал консоли выдает пустую строку, похоже, что назначение в ссылке.on callback не работает.

1 Ответ

0 голосов
/ 19 сентября 2018

Это происходит потому, что запросы к базе данных Firebase асинхронны: ваш console.log() выполняет до , возвращается функция обратного вызова, возвращаемая методом on().

Будет работать следующее:

ref.on('value',function(snap){
   //console.log(snap.val());
   firebaseMsg=snap.val();
   console.log(firebaseMsg);
});

, как вы, вероятно, заметили, поскольку есть закомментированная строка console.log(snap.val());.

Это означает, что, например, вы можете только обновить пользовательский интерфейс приложения (чтобы отразитьизменение в базе данных) из функции обратного вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...