So I am creating a project using a Firebase database and React / Node.js to consult it.
I created a couple of entries via POST request like this:
const res = await fetch(`${MYFIREBASE}/posts.json`, {
method: "POST",
body: JSON.stringify(post)
});
Then I consult these posts in another page like this:
const res = await fetch(`${MYFIREBASE}/posts.json`, { method: 'GET'});
const json = await res.json();
console.log(json)
And I get this result from it:
{
'-O5NIwGpZU_GNQb75BPS': {
post: [ [Object], [Object], [Object] ],
name: 'name1'
},
'-O5NK_uGPJySPQo-ZmDF': {
post: [ [Object], [Object] ],
name: 'name2'
}
}
Now my problem is, and I've been looking all over Google and this site to no use, how can I access my data (that is behind the autogenerated key as a tag), in my code?
Since this is an object I need the key to access the value but the key is an autogenerated value that I of course can't know beforehand. I am feeling pretty lost with this.
I tried stupid things like json[0]
and whatever I could think of, but it does not makes sense because that is not how objects properties are accessed. The only other solution I could think of is access the Object.keys(json)
but it doesn't make any sense that I have to use a workaround for something as simple as consulting all the entries on a document.
I tried reading (to be fair scanning) the firebase docs but they were no use or I missed the relevant sections.
If you don't want to use Object.keys
(as VLAZ commented and the cosmic introvert dude answered), you can use a for in
loop:
for (const key in json) {
console.log(key, json[key]);
}
Both approaches are equally idiomatic and give you the exact same result, the for in
loop just doesn't have to create a closure.