Json Firebase。验证错误

Json Firebase。验证错误,json,firebase-realtime-database,firebase-security,Json,Firebase Realtime Database,Firebase Security,我有一个Firebase数据库,组织如下 如您所见,它是一个字典数组(每个字典包含两个条目,“text”和“tag”) 它包含以下规则。我想做的是确保newData包含一个名为“text”的字符串和一个名为“tag”的字符串 { "rules": { ".read": "auth != null", ".write": "!data.exists() || !newData.exists()", //Can write only Array with

我有一个Firebase数据库,组织如下

如您所见,它是一个字典数组(每个字典包含两个条目,“text”和“tag”)

它包含以下规则。我想做的是确保newData包含一个名为“text”的字符串和一个名为“tag”的字符串

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

     ".write": "!data.exists() || !newData.exists()",

       //Can write only Array with text and tag
     ".validate": "newData.hasChildren(['text', 'tag'])",
     "$other": {
        ".validate": false
     },
     "text": {
       ".validate": "newData.isString()"
     },
     "tag": {
       ".validate": "newData.isString()"
     }
   }
 }
当我给它以下JSON时,它在第10行(
”.validate)上说“模拟写入被拒绝”:“newData.haschilds(['text','tag']),

JSON文件:

 {
    "3": {
        "text": "text message",
        "tag": "this is a tag"
    }
}
我应该如何写我的规则?
谢谢您的帮助。

您将验证规则定义得太高了一级。现在验证整个数据库是否有子项
标记
文本
,但它没有。相反,您希望验证根节点下的每个子节点是否都有这些子节点,这需要您定义如下的
$
变量规则:

{
   "rules": {
     ".read": "auth != null",
     "$childid": {
       ".write": "!data.exists() || !newData.exists()",

       //Can write only Array with text and tag
       ".validate": "newData.hasChildren(['text', 'tag'])",
       "$other": {
        ".validate": false
       },
       "text": {
         ".validate": "newData.isString()"
       },
       "tag": {
         ".validate": "newData.isString()"
       }
     }
   }
 }