firebase-realtime-database - 实时数据库上的数据验证
问题描述
我正在尝试做一个简单的验证作为测试,但它不起作用,我想我没有得到语法。这个想法是在数据库上存储一封电子邮件,所以我尝试的第一个测试是设置长度,如下所示:
{
"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:
在网站和游乐场被拒绝
验证测试 2 在网站上被拒绝并在操场上通过
解决方案
第一个拒绝是预期的,因为您正在将 JSON 对象写入根并且没有length
属性。
请记住newData
,数据存在于定义规则的位置,因此在这种情况下newData
是您的整个数据库。您通常希望在您正在验证的数据级别上定义您的规则,就像在您的第二个示例中一样。
由于第二个示例在操场上有效,请编辑您的问题以包含不起作用的(独立)代码。
推荐阅读
- api - 在 react-native 上使用令牌访问(发送令牌作为参数)获取 api
- ios - 如何从 NEVPNManager IKEv2 获取连接失败的原因?
- angular - 如果路由解析器服务的类型为 void,则不会加载 http 请求
- javascript - 从状态数组获取特定值时未定义 - React Native
- css - Button Class 得到的不是 div 的全长?
- c++ - 这是什么''(常量向量
> &A)" 段代码是什么意思? - unity3d - Unity3d:如何从 HTTP 接收输入
- java - 即使从服务器删除后,数据仍显示在房间数据库中
- django - 使用 django-secretballot 和 intercooler.js 制作 ajax 按钮
- mysql - MySQL 在搜索“する”时返回“ずる”(日语)