2

我有这套规则:

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

如果. _ _ userProjects_ userProjects.length > userData.maxProjects由于该".validate": false规则,用户已被拒绝写入 maxProjects。如何将 userProjects 的长度与 maxProjects 进行比较?

如果不可能,那么正确的方法是什么?

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 回答
1

你读过这个吗?

父母()

获取父位置的 RuleDataSnapshot。
返回值RuleDataSnapshot- 父位置的 RuleDataSnapshot。

于 2017-05-31T22:11:08.033 回答