Java 如何在Firestore(Android)中显示某个成员制作的文档?

Java 如何在Firestore(Android)中显示某个成员制作的文档?,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我有一个应用程序,成员可以发布内容,但我有一个问题。我的问题是我想做一个活动,其中只显示作者成员的出版物,但Firestore要求我创建一个索引来执行此操作,问题是每个成员的文档都基于其UID 例如: 我的UID是:x54asdASD544 然后,我尝试进行以下查询: Query query = mMembersDB.document("POST").collection("x54asdASD544").whereEqualTo("type", "public").orderBy("date")

我有一个应用程序,成员可以发布内容,但我有一个问题。我的问题是我想做一个活动,其中只显示作者成员的出版物,但Firestore要求我创建一个索引来执行此操作,问题是每个成员的文档都基于其UID

例如: 我的UID是:
x54asdASD544

然后,我尝试进行以下查询:

Query query = mMembersDB.document("POST").collection("x54asdASD544").whereEqualTo("type", "public").orderBy("date");
当Firestore要求我创建一个索引时,我创建了它,它在创建索引后工作得很好,但是如果我也要这样做,去看另一个作者的出版物,那么他要求我创建另一个索引

例如:

Query query = mMembersDB.document("POST").collection("x54assds").whereEqualTo("type", "public").orderBy("date");
UID已更改,则先前创建的索引不再工作

  • 有什么解决方案可以修复这个问题吗
  • 有没有办法自动创建索引

每个唯一命名的集合和子集合必须有自己的索引。不能在集合之间共享索引定义。它们必须单独定义。无法自动创建索引


基于UID命名子集合听起来不是一种非常有效的数据建模方法。考虑将所有文档放在一个集合中,将UID作为字段放在这些文档中,并使用UID作为过滤器来查找您想要的。在引用字段的集合上创建索引时,字段中的值无关紧要。您不必为每个可能的字段值创建索引。对不起,我复制了错误的示例代码,但我更新了问题。