9

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

 "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()数据以允许我在将其设置为“是”时将其删除。

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

4

1 回答 1

22

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

所以大家一起:

// create or delete, but no update/overwrite
".write":  "!data.exists() || !newData.exists()"
于 2013-12-26T15:24:11.487 回答