在Firestore中存储多态对象的最佳方法是什么?
示例:假设一个“基础”对象,其他三个继承自该对象。我想将所有特定对象存储在同一集合中。例如,firestore是否可以理解带有字段索引的查询,而该字段索引可能存在于一个文档中而不存在于另一个文档中?
结构为:
BaseObject
A extends BaseObject
B extends BaseObject
C extends BaseObject
因此,我考虑将A,B和C存储在同一集合中,并根据超类中的“ type”属性commom进行强制转换...
因此,在查询时,我想到的只是知道类型和类型。但是,我真的不知道firestore是否支持创建一个或多个索引来执行查询,如果一个或多个文档中是否存在某些属性。
可能吗?
答案 0 :(得分:1)
是的,您的方法对我来说听起来可能。在一个集合中存储多种类型是处理该场景的方法之一,它具有自己的优点和缺点。
回读数据时,不能简单地将值转换为常量。您必须自己阅读类型字段,并在对toObject()
的调用中请求正确的子类,因为Firebase SDK对该字段的含义一无所知。
我建议您尝试一下,如果遇到更具体的问题,请报告。