我正在尝试构建以下内容:
当用户请求数据时,如果数据不存在,我想提供一个后备文档。 我使用的是AngularFire2。
受the doc here的启发我以为我可以先使用displayQuestion(questionId: string, lang: string) {
const cityRef = this.afs.firestore.collection("game").doc(`${questionId}`).collection(`${lang}`).doc('content')
cityRef.get()
.then(doc => {
if (!doc.exists) {
console.log('No such document!');
return this.afs.doc(`/game/${questionId}/en/content`).valueChanges()
} else {
console.log('Document data:', doc.data());
return this.afs.collection("game").doc(`${questionId}`).collection(`${lang}`).doc('content').valueChanges()
}
})
.catch(err => {
console.log('Error getting document', err);
})
}
方法检查文档是否存在然后返回AngularFire2 Observable。但这不起作用。
为什么此功能目前不返回请求Observable?
combine_first
答案 0 :(得分:0)
如果仍然存在此问题,则可以从angularfire2库存储库中检查此issue。
您可以编写例如:
const myContentDoc = this.afs.doc(`game/${questionID}/${lang}/content`);
然后,您可以执行以下操作:
myContentDoc.snapshotChanges().pipe(take(1)).toPromise()
.then((action: any) => {
if (!action.payload.exists) {
return this.afs.doc(`game/${anotherQuestionID}/${lang}/content`).ref.get();
}
});