首页 > 解决方案 > 自定义、用户特定文档字段的 Firestore 索引

问题描述

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

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 是用户定义的,并且每个用户都可以自定义,所以我无法提前对它们进行索引。关于如何正确构建这个或解决方法的任何想法?

标签: angularfirebasegoogle-cloud-firestoreangularfire2

解决方案


如果我正确理解您需要知道每个用户的每个字段的(现有)值列表,以便构建查询(例如在前端使用显示现有值的下拉列表),您可以存储这些用户配置文件中的值,可能在某些数组中。

这意味着,例如,当您编写新Room文档时,您会使用新值更新用户配置文件wall-color(使用批量写入arrayUnion())。

当用户打开应用程序时,您将查询此用户配置文件。


推荐阅读