如何在 AngularFire 中使用文档 ID 查询文档?

sac*_*hod 4 firebase typescript angularfire google-cloud-firestore

我正在尝试根据文档 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};
            });
        })
     );
Run Code Online (Sandbox Code Playgroud)

afs 是 AngularFirestore 类型

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

我尝试了以下提到的解决方案: 通过将 ref.id 替换为 firebase.firestore.FieldPath.documentId() 来查询文档 IDfirestore 数据库,但出现错误:

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

帮助我检索数据。

sac*_*hod 9

我可以通过更换解决它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};
            });
        })
     );
Run Code Online (Sandbox Code Playgroud)