Отметка времени сервера Firebase не преобразуется при использовании child_added - PullRequest
0 голосов
/ 07 марта 2019

Используя «child_added» в Firebase Web, я пытаюсь преобразовать значение метки времени с именем «requestTimestamp», но я продолжаю получать значение «01.01.1970 8:00 AM». Всякий раз, когда я обновляю веб-страницу, метка времени преобразуется.

var urlRef = firebase.database().ref().child("/Rescue Requests/New Rescue 
Requests/");

urlRef.on("child_added", function(snapshot) 
var valTimestamp = snapshot.child("requestTimestamp").val();

        var myDate = new Date(valTimestamp);

            //YEAR FORMAT MM/DD/YY
            var result = ((myDate.getMonth().toString().length > 1) ? (myDate.getMonth() + 1) : 
                ('0' + (myDate.getMonth() + 1))) + '/' + ((myDate.getDate().toString().length > 1) ? myDate.getDate() :
                ('0' + myDate.getDate())) + '/' + myDate.getFullYear();

            //TIME FORMAT 12 HOURS
            var hours = myDate.getHours();
            var minutes = myDate.getMinutes();
            var ampm = hours >= 12 ? 'PM' : 'AM';
            hours = hours % 12;
            hours = hours ? hours : 12; // the hour '0' should be '12'
            minutes = minutes < 10 ? '0'+minutes : minutes;
            var strTime = hours + ':' + minutes + ' ' + ampm;

    cellTime.appendChild(document.createTextNode(result +" "+strTime));

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Событие child_added происходит только когда:

  1. Данные изначально загружены
  2. Добавлен новый дочерний узел

Когда вы добавляете нового дочернего элемента с отметкой времени на стороне сервера, происходит несколько вещей:

  1. Клиент Firebase, к которому вы добавляете узел, немедленно запускает событие child_added для нового узла с лучшим предположением о данных.
  2. Клиент отправляет данные на сервер.
  3. Сервер проверяет запись, гарантируя, что она разрешена в соответствии с правилами безопасности, и расширяет любые маркеры (т. Е. Маркер метки времени на стороне сервера).
  4. Затем сервер отправляет результат обратно клиенту.
  5. Клиент запускает любые события, необходимые для согласования своих данных с

На этом последнем шаге ему нужно изменить метку времени, потому что его первоначальная оценка, вероятно, была неправильной. Таким образом, он запускает событие child_changed для узла в этом случае.

Аналогичным образом, если сервер отклонил запись, из-за правил безопасности клиент сгенерирует событие child_removed для согласования.

0 голосов
/ 07 марта 2019

Я занимаюсь разработкой приложения для Android и также столкнулся с этой проблемой.Это работало верно до одного месяца.Я думаю, что это ошибка Firebase.

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