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

时间:2020-01-26 16:13:21

标签: typescript firebase google-cloud-firestore angularfire

我正在尝试根据文档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,将ref.id替换为firebase.firestore.FieldPath.documentId(),但出现错误:

“ firebase”是指UMD全局文件,但当前文件是模块。

帮我找回数据。

2 个答案:

答案 0 :(得分:7)

我可以通过将ref.id替换为firebase.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};
            });
        })
     );

答案 1 :(得分:0)

一种替代方法是在创建文档时在文档中添加一个id字符串属性(使其等于文档的实际ID)并将其用于查询。