React-Native: читать метку времени, сохраненную в Firebase, после ее обновления - PullRequest
0 голосов
/ 27 апреля 2019

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

Вот некоторый код, который я нашел в Интернете, он обновляет дату на Firebase , достигает первого 'then' блока , но затем никогда не продолжается, поэтому никогда не достигайте второго блок «then» и никогда не показывать предупреждение (onlyDate);

У меня нет ошибок по поводу правил в Firebase, доступны как чтение, так и запись.

getDateServerFirebase = () => {

    let fb_currentTime = firebase.database().ref('currentTime/');
    fb_currentTime.update({ time: firebase.database.ServerValue.TIMESTAMP })
    .then(() => {
      fb_currentTime.once('value').then(function (data) {
          //console.log(data);
          let timestamp = data._value.time;
          let fullDate = new Date(timestamp);
          let onlyDate = fullDate.getDate() + '/' + (fullDate.getMonth()+1) + '/' + fullDate.getFullYear();

          alert(onlyDate);

        }, function serverTimeErr(err) {
          console.log('Could not reach to the server time !');
        });
    }, function (err) {
      console.log ('set time error:', err)
    });
  }

Я пробовал эту и ту же проблему: написание работает, чтение не .

setData = () =>{
    firebase.database().ref('prova/').set({
      name:'luis',
      surname:'rew'
    }, function(error) {
      if (error) {
        // The write failed...
      } else {
        // Data saved successfully!
      }
    });
  }

  readData = () =>{
    firebase.database().ref('prova/')
    .once('value')
    .then((data)=>{
      alert(data);
    })
  }

Может кто-нибудь мне помочь ??

1 Ответ

0 голосов
/ 27 апреля 2019

Способ доступа к ответу из функции firebase заключается в запуске val (); функция на результат.

изменить эту строку

let timestamp = data._value.time;

в это:

let timestamp = data.val().time;
...