用于数据验证的 Firebase 规则

Firebase Rule for Data Validation

假设数据结构如下,我想要一个禁止添加新车品牌的规则,例如用户不能添加 "toyota"。所以,我需要 .validate 使得 .update 必须匹配现有品牌。

我尝试过将 $cars 与 ".validate": "newData.val().contains($cars)" 一起使用以及所有其他方式,但都没有成功。感谢任何帮助。

我的代码是:

function setModel(model,make,key){
    if (model && make && key){
        var carsRef = ref.child('cars');
        var makeRef = carsRef.child(make);
        var modelRef = makeRef.child(model);
        var obj = {};
        obj[key] = true;           
        modelRef.update(obj, onComplete);
    }
}

Firebase 看起来像:

{
"cars" : {
   "chevrolet" : {
      "silverado" : {
         "id192874623" : true,
         "id786766663" : true
      }
   },
   "ford" : {
      "taurus" : {
         "id736273627" : true
      }
   },
   "honda" : {
      "accord" : {
         "id635263535" : true
      }
   }
}}

禁止添加新汽车品牌:

"cars": {
  "$brand": {
    ".validate": "data.exists()"
  }
}

文档的 existing data vs new data 部分对此进行了介绍。