【问题标题】:Firebase IndexOn Warning MessageFirebase IndexOn 警告消息
【发布时间】:2017-07-23 09:27:44
【问题描述】:

我对 firebase 的索引有一些疑问。这是我的火力基地结构:

merchants {
    merchantID1 : {
        merchantName : 
        branches : {
            branchID1 : {
                branchAddress :
            }
        }
    }
}

我在 firebase 站点的索引规则:

"merchants": {
      ".indexOn": ["merchantName"]
},

我从 JavaScript 获得了两个不同的 orderByChild 查询。一个是查询merchantName,另一个是branchAddress。在我在 firebase 添加indexOn merchantName rule 后,警告消息消失了。但是,当我执行另一个查询 branchAddress 的函数时,我收到以下警告消息:

FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": 
"branchAddress" at /merchants/-KpeV5_lnWA2Zd_g7x8C/branches to your security 
rules for better performance

如何在孩子的不同级别实际指定 indexOn 规则?

【问题讨论】:

    标签: javascript performance firebase firebase-realtime-database


    【解决方案1】:

    $childKey 匹配任何子键。所以你必须在这里使用这个概念。

    将您的数据库规则更改为:

    "merchants": {
        ".indexOn": ["merchantName"],
        "$merchantId": {/*This matches all keys*/
            "branches": {
                ".indexOn": ["branchAddress"]
            }
        }
    }
    

    【讨论】:

    • 我明白了。非常感谢!
    • 乐于助人:)
    • 抱歉,请您快速检查一下有关 Firebase 规则的内容。通常为什么开发人员在firebase站点编写那些“.validate”规则,因为验证应该在发布到数据库站点之前在客户端站点完成?是否有理由在 firebase 站点上编写那些“.validate”规则?是不是因为有时候我们将数据发布到数据库站点时,数据可能会损坏,这就是为什么我们应该在插入之前再进行一次检查?
    • 我会说客户端验证只是为了获得最佳用户体验,而服务器端验证是在存储之前检查正确的数据。所以我认为你的安全规则应该有正确的.validate 密钥。
    • @AnandMohan 我也在做同样的事情,但为什么会出现同样的错误。?
    猜你喜欢
    • 2017-07-19
    • 2016-11-09
    • 2021-01-24
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 2019-10-03
    相关资源
    最近更新 更多