Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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
Javascript 如何更正在firebase实时规则上添加索引_Javascript_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Javascript 如何更正在firebase实时规则上添加索引

Javascript 如何更正在firebase实时规则上添加索引,javascript,firebase,firebase-realtime-database,firebase-security,Javascript,Firebase,Firebase Realtime Database,Firebase Security,大家好,我一直在尝试为这个特定的结构添加一个特定的索引: 但事实是,在我阅读了来自的文档之后,我仍然无法找到一种方法来完成将索引添加到uid\u到at/c000000001\u talks和c000000002\u talks以及其他内容的任务 为了理解这一点,c000000001_u是租户的前缀,因此每个租户在表中都有自己的前缀 我已经看到firebase建议在两个级别创建,如租户\c000000001\talks 租户\c00000001\members 但是这种结构已经存在,并且正在生产

大家好,我一直在尝试为这个特定的结构添加一个特定的索引:

但事实是,在我阅读了来自的文档之后,我仍然无法找到一种方法来完成将索引添加到uid\u到at/c000000001\u talks和c000000002\u talks以及其他内容的任务

为了理解这一点,c000000001_u是租户的前缀,因此每个租户在表中都有自己的前缀

我已经看到firebase建议在两个级别创建,如租户\c000000001\talks 租户\c00000001\members


但是这种结构已经存在,并且正在生产中,我们无法再对其进行更改。

您可能没有将索引放在规则的正确分支上

试试这个:

RED-CROSSED_PARENT:
                  {
                   "$talksID": 
                              {
                               ".indexOn": "uid_to"
                               }
                  }
因为你的谈话是相同的结构,理想情况下,你会让他们在同一个家长的“谈话”下,所以indexOn只适用于孩子的谈话

RED-CROSSED_PARENT:
                  {
                  Talks:{
                         "$talksID": 
                                   {
                                   ".indexOn": "uid_to"
                                   }
                        }
                   }

我假设您知道如何获取数据库中的规则

为什么要添加索引?通常,当推荐索引时,您可以在firebase函数日志中看到投诉/建议,只需检查日志并查看优化数据库所需的位置。此外,我一直在对子值使用索引,而不是对父UID,但我在Hi@Mocas上的结构中看不到索引,因为firebase正在对相同表的每个租户抱怨。以下是他的抱怨:@firebase/database:firebase警告:使用未指定的索引。您的数据将在客户端上下载和筛选。考虑Addio.Dexon:UIDITO到AT/C000 000 02x,以更好的性能与您的安全规则进行对话。问题是,这个提示也适用于C000 000 000 3x会话,C000 000 000 4x会话,继续下去,这样我就完成了并且它工作了。但是,随着新客户的订阅,我们必须手动添加新的索引…嘿@Mocas,我已经用第一种方法测试过了,它似乎有效。对其他租户进行测试以确认。是的,它是有效的,只需添加到规则:$talksId:{.indexOn:[uid\u to]}我只担心在同一级别中,我们还有其他表,如c000000003\u连接用户、c000000003\u成员。。。