如何自动为Cloud Firestore创建索引?

时间:2017-12-24 13:20:44

标签: android firebase google-cloud-firestore

我有一个Lists的集合,其中存储了一堆文档。每个文档都包含一些详细信息和users的集合。我将用户存储在users集合中,使用uid作为键,使用布尔值作为值。这意味着只有那些用户才能阅读该特定列表。这是我的数据库结构。

enter image description here 在我的代码中,我使用此查询:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference listsRef = rootRef.collection("Lists");
Query query = listsRef.orderBy("date").whereEqualTo("users."+uid, true);

我收到以下错误:

FAILED_PRECONDITION: The query requires an index. You can create it here: ...

如果我去控制台创建所需的索引,一切正常。但是是否有可能自动创建索引,因为我无法为加入我的应用程序的每个用户手动创建索引。如果每个用户都有一些排序索引会有问题吗?

还有其他解决方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:7)

Cloud Firestore会自动在文档的各个字段上创建索引。跨越多个字段的复杂索引(目前)只能在Firebase控制台中手动创建。

如果您发现需要以编程方式创建索引,则通常应考虑扩充数据结构以允许反向查找。例如,在您的方案中,我添加了一个userLists集合,您可以在其中保留每个用户的列表。