Reputation: 228
can anyone help me to "translate" this example in Typescript with async/await
console.log("start")
var citiesRef = db.collection('cities');
var allCities = citiesRef.get()
.then(snapshot => {
snapshot.forEach(doc => {
console.log(doc.id, '=>', doc.data().name);
});
console.log("end")
})
.catch(err => {
console.log('Error getting documents', err);
});
I tested some code but i think i do something wrong with the 'forEach' loop.
The result i want in console:
start
Key1 => city1
Key2 => city2
end
Result i get in some of my tests:
start
end
Key1 => city1
Key2 => city2
Thx in advance
Upvotes: 12
Views: 30853
Reputation: 10907
async/await
async function allData_firestore(){ <---async
var db = firebase.firestore();
var allCities = await db.collection('cities').get(); //<----await
for(const doc of allCities.docs){
console.log(doc.id, '=>', doc.data());
}
return allCities
}
Or promise function
function allData_firestore(){
return db.collection('cities').doc('0gUdiWNEHiPMZStV9G').get().then(function (doc) {
if (doc.exists) return doc.data();
return Promise.reject("No such document");
}
}
Upvotes: 0
Reputation: 249666
Without knowing the types, I assumed base on their usage that they conform to the following interface:
var db: {
collection(name: 'cities'): {
get(): Promise<Array<{
id: string;
data(): { name: string }
}>>
}
};
Given that declaration, an async/await
version of the code would be
async function foo() {
console.log("start")
var citiesRef = db.collection('cities');
try {
var allCitiesSnapShot = await citiesRef.get();
allCitiesSnapShot.forEach(doc => {
console.log(doc.id, '=>', doc.data().name);
});
console.log("end")
}
catch (err) {
console.log('Error getting documents', err);
}
}
Upvotes: 13