【问题标题】:Firestore: get an Observable doc from another field which is not the IdFirestore:从另一个不是 Id 的字段中获取 Observable 文档
【发布时间】:2020-03-29 23:01:06
【问题描述】:

我想从集合中获取单个 Observable,但我想从不是 id 的不同字段中获取它。有可能吗?

我不想进行查询并限制为 1。我需要获取 Single Observable 而不是数组 Observable。

架构:

代码:

this.afs.doc<Credit>('credits/uid/'+ uid).valueChanges();

错误:

无效的文档参考。文档引用必须有偶数个段,但 credits/uid/d1Zt8sozYqb6H27lhoJgF1Gx2Cc2 有 3 个

【问题讨论】:

  • 您提供的架构有问题。文档仅包含字段...或者第一个字段 id 是文档 ID 并且包含两个字段?
  • @vitooh 我已经包含了架构的图片。

标签: google-cloud-firestore angularfire2


【解决方案1】:

我不确定我是否理解正确,但我猜您想获取具有特定 uid 字段值的文档,而不是使用文档 ID。

此特定错误与 Firestore 的共同特征有关,即每个文档都必须在集合中而不是在文档中。因此,如果段(由/ 分隔)编号为偶数,则始终检查文档的path 值(也嵌套)。 collection1/doc1/collection2/doc2/collection3/doc3

在您的代码中,我们有 3 个段(如 credits/uid/&lt;uid_value&gt;),所以这是错误。

我对angularFire2本身不是很熟悉,但是我用JS做过。该方法通常是查询集合而不是对结果使用方法,在经典 JS 中返回 Query 对象,在该对象上可以使用与 CollectionReference 相同的方法(它扩展了“查询”顺便说一句 - reference 1)。

将此方法与这些参考文献相结合:queryingcollection 我建议以下解决方案:

this.afs.collection('credits', ref => ref.where('uid', '==', <uid_value>)).valueChanges()

如果uid_value 是唯一的,您应该获取您的文档。

很遗憾,我没有任何游乐场来测试解决方案,所以请告诉我它是如何工作的 - 或者是否会有任何其他错误。

我希望它会有所帮助!祝你好运!

【讨论】:

  • 这样你得到一个 Observable 不是一个 Observable。我想获得单个对象而不是 Credit 数组
猜你喜欢
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
  • 2019-07-04
相关资源
最近更新 更多