【问题标题】:How to query documents using document IDs in AngularFire?如何在 AngularFire 中使用文档 ID 查询文档?
【发布时间】:2020-05-12 04:24:34
【问题描述】:

我正在尝试根据文档 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 全局,但当前文件是一个模块。

帮助我检索数据。

【问题讨论】:

  • 请不要在 Stack Overflow 上显示文字图片。最好将文本复制到问题本身中,以便于阅读和搜索。
  • @sachinrathod 我在我的一个项目中发现了这个,试一试:import * as firebase from 'firebase/app';
  • @Stratubas 我提到了这个npmjs.com/package/angular-firebase 并导入了import * as firebase from 'firebase'; 并且它有效,是的,我尝试了你建议的导入它也有效。谢谢。我会写答案。
  • @sachinrathod 如果我没记错的话,从'firebase' 导入会在控制台中发出警告。在回答之前检查它。
  • @Stratubas 是的,你是对的 import * as firebase from 'firebase'; 发出警告。

标签: typescript firebase google-cloud-firestore angularfire


【解决方案1】:

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

【讨论】:

  • 是否可以在不向文档添加 id 字符串属性的情况下检索数据?
【解决方案2】:

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

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

控制台警告

所以,建议使用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 伙计!
  • @KingDarBoja 仅当您知道文档 ID 时;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 2018-07-06
相关资源
最近更新 更多