首页 > 解决方案 > 如何在 AngularFire 中使用文档 ID 查询文档?

问题描述

我正在尝试根据文档 ID 查询文档,但无法使用

this.afs.collection<books>('books' , ref => ref.where( ref.id , 'in' , ['4L9uf4w5fqFXlU0uLbEM','bpXgEOmYqGor8uhUz2uq','tJFYPJcLMYNS8qnaUtMv'])).snapshotChanges().pipe(
            map(actions => {
            return actions.map( a => {
                const data = a.payload.doc.data();
                return {...data};
            });
        })
     );

afs 是 AngularFirestore 类型

我不知道上面的代码是否正确。

我尝试了以下提到的解决方案: Query firestore database for document id by replace ref.id with firebase.firestore.FieldPath.documentId() 但我得到一个错误:

'firebase' 指的是一个 UMD 全局文件,但当前文件是一个模块。

帮助我检索数据。

标签: typescriptfirebasegoogle-cloud-firestoreangularfire

解决方案


我可以通过替换ref.idfirebase.firestore.FieldPath.documentId()导入 来解决它import * as firebase from 'firebase/app';

该问题也可以通过导入来解决,import * as firebase from 'firebase';但正如@Stratubas 在上面的评论部分中提到的,导入给出了

控制台中的警告

所以,建议使用import * as firebase from 'firebase/app';

最后我的代码看起来:

import * as firebase from 'firebase/app';

this.afs.collection<books>('books' , ref => ref.where( firebase.firestore.FieldPath.documentId() , 'in' , ['4L9uf4w5fqFXlU0uLbEM','bpXgEOmYqGor8uhUz2uq','tJFYPJcLMYNS8qnaUtMv'])).snapshotChanges().pipe(
            map(actions => {
            return actions.map( a => {
                const data = a.payload.doc.data();
                return {...data};
            });
        })
     );

推荐阅读