Java 在深层嵌套项上使用indexOn的问题
我在stackoverflow上搜索了很多,读了很多问题 我有3个indexOn问题,其中2个已经解决,1个仍然存在 我正在对数据库进行排序,并在“favorite”和“Poeter”上使用indexOn,运行成功,但我还需要一个用于心脏节点内数字的indexOn。 查询已成功运行,但我在android studio中收到indexOn警告 我曾尝试在数据库规则中使用变量代替数字,但仍然收到警告 使用未指定的索引。您的数据将在客户端上下载和筛选。考虑在你的安全和FixBASE数据库规则中添加“.Dexon”:“心脏/ 91916×***”,以获得更好的性能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数据库规则中添加“.
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
}
}