I hit a really weird issue with a simple JavaScript array last night. I am working on a React Native app powered by Firebase and getting data from the real-time database with the SDK.
Here is the code:
var app = this
this.props.fb.auth().onAuthStateChanged(function(user) {
if (user) {
app.props.fb.database().ref('/users/' + user.uid + "/timeline").once('value').then(function(snapshot) {
var posts = snapshot.val()
return posts
}).then((posts) => {
var statuses = [];
for (i in posts) {
app.props.fb.database().ref('/posts/' + posts[i]).once('value').then(function(snapshot) {
statuses.push(snapshot.val())
});
}
console.log(statuses)
})
}
});
The above code is supposed to get the data from the timeline
of each user, iterate through each of the posts
on the timeline
and then get the data of the post from posts
. It then simply pushes the data to the statuses
array, which is being console logged at the end.
This is what shows up on the console.
Until the array is expanded, the console doesn't show the items in the array. Additionally, when I try to get the length
of the array, it returns 0 and I also can't iterate through the items on the array.
What am I doing wrong?