用于自定义,特定于用户的文档字段的Firestore索引

时间:2019-05-02 13:42:12

标签: angular firebase google-cloud-firestore angularfire2

我有一个包含元素类别的应用程序。每个类别都有用户定义的一组字段:

Category -> Rooms         Category -> Windows
  Fields                    Fields
    wall-color                frame-material
    wall-height               glass-type
    ...                       ...

这些定义的字段现在出现在该类别内的每个元素上。每个元素可以为每个元素保留一个唯一值:

Office 100              Office 200             Window A
  wall-color: blue        wall-color: red        frame-material: metal
  wall-height: 13'-7"     wall-height: 10'-0"    glass-type: double

现在,我希望用户能够根据以下自定义字段中的值查询其元素:

this.firestore.col(`/projects/elements`,ref => ref.where('wall-color','==','blue'))

问题在于,由于这些字段ID是用户定义的,并且是针对每个用户定制的,因此我无法提前对其进行索引。关于如何正确构建此结构或解决方法的任何想法?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您需要了解每个用户的每个字段(现有)值的列表(每个用户),以便构建查询(例如在带有下拉列表的前端)显示现有值),则可以将这些值存储在用户个人资料文档中,可能还存储在某些数组中。

这意味着,例如,当您编写新的Room文档时,将使用新的wall-color值(使用batched writearrayUnion()更新用户配置文件。

当用户打开应用程序时,您将查询此用户个人资料文档。