【问题标题】:How to store polymorphic documents in the same collection in Firestore?如何将多态文档存储在 Firestore 的同一集合中?
【发布时间】:2019-10-10 11:11:55
【问题描述】:

在 Firestore 中存储多态对象的最佳方式是什么?

示例:假设一个“基础”对象,其他三个从它继承。我想将特定对象全部存储在同一个集合中。例如,firestore 能否理解具有可能存在于一个文档中而不存在于另一个文档中的字段索引的查询?

结构是:

BaseObject
A extends BaseObject
B extends BaseObject
C extends BaseObject

所以我想把 A、B 和 C 存储在同一个集合中,并根据超类中的“类型”属性进行转换......

所以在查询的时候,我只想知道类型和转换。但是,我真的不知道firestore是否支持创建一个或多个索引来执行查询是否某个属性存在于一个或多个文档中。

有可能吗?

【问题讨论】:

  • 是的,我觉得你的方法听起来很可能。您只需要自己读取类型字段并在回读时实例化正确的子类,因为 Firebase SDK 对该字段的含义一无所知。我建议您试一试,如果遇到更具体的问题,请及时报告。

标签: firebase google-cloud-firestore


【解决方案1】:

是的,你的方法对我来说是可行的。将多种类型存储在一个集合中是处理该场景的一种方法,它有自己的优点和缺点。

当您读回数据时,您不能简单地转换值。您必须自己阅读类型字段并在对toObject() 的调用中请求正确的子类,因为 Firebase SDK 对该字段的含义一无所知。

我建议您试一试,如果遇到更具体的问题,请及时报告。

【讨论】:

  • 很抱歉我后来的“检查为接受的答案”。再次感谢您和您的英雄团队(Firebase 团队):-D
猜你喜欢
  • 2019-06-25
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
相关资源
最近更新 更多