找出对象是否具有属性而不读取其内容

时间:2013-10-10 02:46:49

标签: javascript firebase firebase-security

最好通过向您展示我的规则来解释:

{
  "rules": {
    "datasets": {
      "$dataset": {
        "$secureName": {
          ".read": "true",
          ".write": "true"
        }
      }
    }
  }
}

基本上规则(应该)说的是:只有在点击/datasets/$dataset/$secureName时才能读写。这就是我在没有身份验证的情况下保护我的应用程序的方法(任何使这个更好的建议都很棒)。

问题是,如果存在同名的dataset,我不想创建新的dataset

我试过这个:

new Firebase(FIREBASE_URL).once('value', function(dataSnapshot) {
  if (dataSnapshot.hasChild(SOME_NAME)) {
    // It exists! Don't make a new one!
  } else {
    // It doesn't exist! Make a new one!
  }
});

但问题是,在dataSnapshot中,它包含的所有信息都不会使我的应用程序非常安全。任何提示都会很棒!谢谢!

1 个答案:

答案 0 :(得分:0)

将安全规则更改为仅在数据集不存在时才允许写入:

{
  "rules": {
    "datasets": {
      "$dataset": {
        "$secureName": {
          ".read": "true",
          ".write": "!data.exists()"
        }
      }
    }
  }
}