任何人都可以帮助我使用async / await
在Typescript中“翻译”这个例子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);
});
我测试了一些代码,但我认为我对'forEach'循环做错了。
我想在控制台中找到的结果:
start
Key1 => city1
Key2 => city2
end
结果我参加了一些测试:
start
end
Key1 => city1
Key2 => city2
提前谢谢
答案 0 :(得分:2)
在不知道类型的情况下,我根据它们的用法假定它们符合以下接口:
var db: {
collection(name: 'cities'): {
get(): Promise<Array<{
id: string;
data(): { name: string }
}>>
}
};
鉴于该声明,代码的async/await
版本将是
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);
}
}
答案 1 :(得分:0)
异步/等待
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
}
或者promise函数
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");
}
}