i need to get the data of all the documents of a collection in the firestore.
but in my forEach I am getting only the first document and I have two.
he prints the console twice but in my setPoints state he puts only the first
what I am doing wrong??
const db = firestore();
await db
.collection('Providers')
.get()
.then(snapshot => {
if (snapshot.empty) {
console.log('nao tem');
return;
}
snapshot.docs.forEach(item => {
console.log('item', item.data());
setPoints([
...points,
{
id: item.id,
latitude: item.data().address.latitude,
longitude: item.data().address.longitude,
},
]);
});
Advertisement
Answer
I don’t immediately see what’s going wrong in your code. But this seems a bit more concise and idiomatic, so it may be worth a shot:
const db = firestore();
await db
.collection('Providers')
.get()
.then(snapshot => {
if (snapshot.empty) {
return;
}
let points = snapshot.docs.map(item => {
return {
id: item.id,
latitude: item.data().address.latitude,
longitude: item.data().address.longitude,
},
]);
});
setPoints(points);
})