2

私はこの一連のルールを持っています:

{
  "rules": {
    "facebook_users": {
      "$user": {
        ".read": "$user == auth.id",
        ".write": "$user == auth.id",
        "userData": {
          "maxProjects": {
            ".validate": false
          },
        "userProjects": {
            ".validate": ???
          }
        }
      }
    }
  }
}

ユーザーが配列に子を追加できないようにしたい場合. ルールにより、ユーザーはすでに maxProjects への書き込みを拒否されています。userProjects の長さを maxProjects と比較するにはどうすればよいですか?userProjectsuserProjects.length > userData.maxProjects".validate": false

それが不可能な場合、これを行う正しい方法は何ですか?

4

2 に答える 2

6

rootと一緒に特殊変数を使用して、child()この比較を行うことができます。

{
  "rules": {
    "facebook_users": {
      "$user": {
        ".read": "$user == auth.id",
        ".write": "$user == auth.id",
        "userData": {
          "maxProjects": {
            ".validate": false
          },
          "userProjects": {
            ".validate": "data.val().length < root.child('facebook_users').child($user).child('userData/maxProjects').val()"
          }
        }
      }
    }
  }
}
于 2013-09-18T18:25:10.293 に答える