如果文档不存在,请切换Firestore引用

时间:2017-12-27 16:03:06

标签: firebase angularfire2 google-cloud-firestore

我正在尝试构建以下内容:

当用户请求数据时,如果数据不存在,我想提供一个后备文档。 我使用的是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

1 个答案:

答案 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();
        }
    });