首页 > 解决方案 > 实时数据库上的数据验证

问题描述

我正在尝试做一个简单的验证作为测试,但它不起作用,我想我没有得到语法。这个想法是在数据库上存储一封电子邮件,所以我尝试的第一个测试是设置长度,如下所示:

{
  "rules": {
    ".read": false,
    ".write": true,
      ".validate": "newData.val().length <= 50"
  }
}

有了这个规则,我每次都会被拒绝,我的 db id 结构如下,db>infos>random key>email,所以我尝试了这个并得到了相同的结果:

{
  "rules": {
    "infos": {
      "email": {
        ".write":true,
            ".validate": "newData.val().length < 50"
      }
    }
  }
}

做这样的事情的正确方法是什么?(我一般是网络开发的初学者)

根据标准规则,当我在网站上输入一些数据时,它会在数据库中显示这些数据

数据库

验证测试1:

验证测试 1在网站和游乐场被拒绝

验证测试 2 验证测试 2在网站上被拒绝并在操场上通过

标签: firebase-realtime-databasefirebase-security

解决方案


第一个拒绝是预期的,因为您正在将 JSON 对象写入根并且没有length属性。

请记住newData,数据存在于定义规则的位置,因此在这种情况下newData是您的整个数据库。您通常希望在您正在验证的数据级别上定义您的规则,就像在您的第二个示例中一样。

由于第二个示例在操场上有效,请编辑您的问题以包含不起作用的(独立)代码。


推荐阅读