【问题标题】:Firebase validation newData.val().lengthFirebase 验证 newData.val().length
【发布时间】:2020-06-23 08:11:34
【问题描述】:

我不知道如何确保可以将无效的大数据写入我的 Firebase 项目。

我有这个数据结构:

{
  "BotLevel" : 3,
  "CreateTime" : "2020-03-04T08:58:13.102305Z"
}

还有这个安全规则:

{
    "rules": {
        ".read": "auth != null",
        ".write": "auth != null",
        "games": {

            "BotLevel": { ".validate": "true && newData.isNumber() && newData.val().length <= 10"},
                "CreateTime": { ".validate": true },

                "$other": { ".validate": false }
        }
    }
}

即使我尝试将newData.val().length 设置为任何内容,当我运行规则时也会出错? 如果没有 length 部分,它也可以很好地验证,即使 val() 验证低于我尝试的任何 x。

我错过了什么?

【问题讨论】:

  • 你到底想做什么?验证数字(BotLevel 值)小于给定值或BotLevel 值的长度小于某个值。
  • 我最初想限制我的数据字段的长度,以确保不会被黑客入侵并让数据库用于填充未经请求的数据。
  • 由于BotLevel 是一个数字,您需要检查它的值(它也以某种方式对应于长度检查,例如&lt; 1000 === length &lt; 4)。 length 属性用于字符串:firebase.google.com/docs/reference/security/database#length

标签: firebase validation firebase-realtime-database firebase-security


【解决方案1】:

我找不到任何关于此的文档,但您似乎只能在字符串上使用 newData.val().length,在数字上使用 newData.val()。

所以在我的例子中,我可以使用

【讨论】:

  • 请查看对您问题的评论。此外,您可以将此精确度添加到您的初始问题(单击编辑链接)而不是写答案。
猜你喜欢
  • 2014-06-30
  • 1970-01-01
  • 2016-08-10
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 2021-01-21
  • 1970-01-01
相关资源
最近更新 更多