我正在尝试根据文档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全局文件,但当前文件是模块。
帮我找回数据。
答案 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)并将其用于查询。