【问题标题】:Firebase delete child with security rule !data.exists on writeFirebase删除具有安全规则的孩子!data.exists on write
【发布时间】:2013-12-26 04:29:14
【问题描述】:

我有一个添加新数据的安全规则

 "CATEGORIES": {
      "$CATEGORIES": {
      ".write":   "root.child('USERS/' + auth.uid + '/type').val() == 'admin' && !data.exists() || root.child('USERS/' + auth.uid + '/type').val() == 'admin' && root.child('MODES/delete').val() == 'yes'",
       "$DATA": {
         ".write":   "root.child('USERS/' + auth.uid + '/type').val() == 'admin'",
       }
      }
      }

用于防止使用!data.exists()规则重复或覆盖子节点。

问题是,它不会让我用这条规则删除孩子,因为数据存在。为了解决这个问题,我添加了 root.child('MODES/delete').val() 数据,以便在我将其设置为“是”时将其删除。

我怎样才能拥有它,这样我就不必做这项工作了?所以我可以没有重复,但如果我想也可以删除孩子?

【问题讨论】:

    标签: firebase firebase-security


    【解决方案1】:

    要允许创建但不允许覆盖,!data.exists() 可以正常工作。要允许删除,您可以使用!newData.exists()

    所以大家一起来:

    // create or delete, but no update/overwrite
    ".write":  "!data.exists() || !newData.exists()"
    

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 2017-08-03
      • 2016-09-28
      相关资源
      最近更新 更多