My code below attempts to insert a Timestamp into Firebase. The Timestamp I'm referring to is this one here. I plan to retrieve the inserted Timestamp and convert said Timestamp to a Date JS Object to be displayed when a user requests for said time. I tried retrieving said Timestamp and encountered something rather strange to me.
I have the following code, initially:
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));
});
I soon noticed that I was breaking my chain of Promise. Because of that, I changed it into the following:
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);
});
And it retrieved the correct data.
My confusion is at the initial code. Why does Firebase still somehow successfully retrieved timeCreated when the process of set() hasn't been completed? I looked at the console.log(...) and the first one to appear is the reading data process. However, as Firebase hasn't even set the value of timeCreated, shouldn't I be reading a null or some other null-like value? Instead, the reading data code returned a Timestamp that is slightly smaller in value to the Timestamp that is to be set().
EDIT
As per request, these are the results I get using my initial code:
However, the value of timeCreated stored in my Firebase is: 1556862732784, which is different from the result of the image above (the result of the image above is the result of console.log(snapshot.val().timeCreated) [1556862732273]).
from What is the sequence of events that happens when I'm using set() in Firebase?

No comments:
Post a Comment