Мой код ниже пытается вставить Timestamp
в Firebase. Timestamp
Я имею в виду здесь . Я планирую извлечь вставленный Timestamp
и преобразовать указанный Timestamp
в Date
объект JS, который будет отображаться, когда пользователь запрашивает указанное время. Я попытался найти сказанное Timestamp
и столкнулся с чем-то довольно странным для меня.
У меня изначально есть следующий код:
let newRef = firebase.database().ref().child('fs').push(); //'fs' here is one of the nodes in my Firebase
newRef.set({
//Set some other data
timeCreated: firebase.database.ServerValue.TIMESTAMP
}).then(() => {
console.log('Insert successful');
});
newRef.once('value').then((snapshot) => {
console.log(snapshot.val().timeCreated);
console.log(new Date(snapshot.val().timeCreated));
});
Вскоре я заметил, что разрываю свою цепь Promise
. Из-за этого я изменил это на следующее:
let newRef = firebase.database().ref().child('fs').push();
newRef.set({
//Some other data
timeCreated: firebase.database.ServerValue.TIMESTAMP;
}).then(() => {
console.log('Insert successful');
return newRef.once('value').then((snapshot) => snapshot.val().timeCreated);
}).then((timeRetrieved) => {
console.log(timeRetrieved);
console.log(new Date(timeRetrieved);
});
И он восстановил правильные данные.
Моя путаница в исходном коде. Почему Firebase все еще каким-то образом успешно извлекает timeCreated
, когда процесс set()
еще не завершен? Я посмотрел на console.log(...)
, и первое, что появилось, - это процесс чтения данных. Однако, поскольку Firebase даже не установил значение timeCreated
, я не должен читать null
или какое-либо другое null
-подобное значение? Вместо этого код чтения данных вернул Timestamp
, значение которого немного меньше значения Timestamp
, которое должно быть set()
.
EDIT
В соответствии с запросом, это результаты, которые я получаю, используя мой исходный код:
Однако значение timeCreated
, хранящееся в моей Firebase, равно: 1556862732784
, что отличается от результата на изображении выше (результат на изображении выше - результат console.log(snapshot.val().timeCreated)
[1556862732273
] ).