如何在Firestore的同一集合中存储多态文档?

时间:2019-10-10 11:11:55

标签: firebase google-cloud-firestore

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

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

结构为:

BaseObject
A extends BaseObject
B extends BaseObject
C extends BaseObject

因此,我考虑将A,B和C存储在同一集合中,并根据超类中的“ type”属性commom进行强制转换...

因此,在查询时,我想到的只是知道类型和类型。但是,我真的不知道firestore是否支持创建一个或多个索引来执行查询,如果一个或多个文档中是否存在某些属性。

可能吗?

1 个答案:

答案 0 :(得分:1)

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

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

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