在 firestore [通配符] 中为点注释动态路径创建索引?

Creating indexing for dot annotated dynamic path in firestore [Wildcard]?

我的 collection 创建如下:

-products
  -productID
    -category [object]
      catitem1 - boolean
      catitem2 - boolean

现在我写了一个查询如下

this.afs.collection<Product>('products', ref =>
    ref
      .where(`category.${categoryName}`, '==', true)
      .limit(limit)
);

这个查询工作正常,但是当我将 orderBy 添加到上面的查询时,我被要求为查询创建一个 index

this.afs.collection<Product>('products', ref =>
    ref
      .where(`category.${categoryName}`, '==', true)
      .orderBy('createdDate','desc')
      .limit(limit)
);

由于 categoryName 可以创建并可以随时更改,我应该为每个 categoryName 添加索引,这将以数百为单位。

有什么方法可以为 category.categoryName 创建通配符索引?

我尝试使用 category.*,但这是不可接受的。希望能在这里找到一些帮助。

自从提出这个问题后,Firestore 实施了各种运算符来帮助 querying for array membership。在撰写本文时可用的运算符有:array-containsarray-contains-anyinnot-in.

不是将 category 存储为一个 object,每个 categoryName 有一个 Boolean 属性,你可以有一个 categories 数组 包含产品所属类别的 String 个名称(或者,如果您想保存 space,Int 个 ID) .

查询可以像这样工作,只需要一个索引:

this.afs.collection<Product>('products', ref =>
    ref
      .where('categories', 'array-contains', categoryName)
      .orderBy('createdDate','desc')
      .limit(limit)
);