Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在深层嵌套项上使用indexOn的问题_Java_Android_Firebase Realtime Database - Fatal编程技术网

Java 在深层嵌套项上使用indexOn的问题

Java 在深层嵌套项上使用indexOn的问题,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我在stackoverflow上搜索了很多,读了很多问题 我有3个indexOn问题,其中2个已经解决,1个仍然存在 我正在对数据库进行排序,并在“favorite”和“Poeter”上使用indexOn,运行成功,但我还需要一个用于心脏节点内数字的indexOn。 查询已成功运行,但我在android studio中收到indexOn警告 我曾尝试在数据库规则中使用变量代替数字,但仍然收到警告 使用未指定的索引。您的数据将在客户端上下载和筛选。考虑在你的安全和FixBASE数据库规则中添加“.

我在stackoverflow上搜索了很多,读了很多问题 我有3个indexOn问题,其中2个已经解决,1个仍然存在 我正在对数据库进行排序,并在“favorite”和“Poeter”上使用indexOn,运行成功,但我还需要一个用于心脏节点内数字的indexOn。 查询已成功运行,但我在android studio中收到indexOn警告

我曾尝试在数据库规则中使用变量代替数字,但仍然收到警告

使用未指定的索引。您的数据将在客户端上下载和筛选。考虑在你的安全和FixBASE数据库规则中添加“.Dexon”:“心脏/ 91916×***”,以获得更好的性能

queryFav=FirebaseDatabase.getInstance()
.getReference(reference).orderByChild(child).equalTo(“心脏”);

上述查询已成功运行,但indexOn规则应该是什么?

您收到的消息意味着您正在名为
gazal
的节点上运行具有
orderBy(“heart/+91916*****”)的查询。为了高效地运行该查询,您需要在安全规则中的
heart/+91916******
节点上有一个索引。但由于该索引的
+91916******
部分可能是动态的(即,对于应用程序的每个用户,
+91916*********
的值不同),因此必须为每个用户添加索引。这是不可行的

换句话说:您当前的数据结构使阅读特定诗歌的用户变得容易。然而,这并不容易确定特定用户所写的诗歌。为了使这同样容易,您需要添加一个额外的数据结构“

使用上述结构,您可以轻松地为感兴趣的用户阅读
user\u hearts
节点,然后根据需要逐个阅读诗歌

另见:


感谢Frank对您的快速响应。但我有大约10k+这样的节点,因此更改数据库结构对我来说很困难,在我现有的结构上使用indexon是不可能的吗?
"user_hearts": {
  "+91916*******": {
    "-KjYiXzl1ancR8Pi3MfQ": true
  }
}