Firebase Realtime Database规则配置:添加用户自删权限且保留原有规则
修改后的Firebase Realtime Database规则
{ "rules": { //".read": true, "Users" : { "3X3": { ".indexOn": ["time"], ".read": "data.exists()", "$userID": { ".write": "!data.exists() || !newData.exists() || (newData.child('time').val() < data.child('time').val()) || (newData.child('userName').val() != data.child('userName').val())" } } } } }
规则逻辑解析
- 首次录入数据:
!data.exists()保留原逻辑,用户创建自己的节点时直接允许写入。 - 删除自身数据:新增
!newData.exists()条件——调用RemoveValueAsync()时,目标节点的newData会被置为空,此条件成立,允许删除操作。 - time字段校验:只有当
newData存在(非删除场景)时,才会触发newData.child('time').val() < data.child('time').val()的校验,确保只能写入比当前值更小的time。 - userName修改权限:同理,仅在非删除场景下校验
newData.child('userName').val() != data.child('userName').val(),允许修改用户名。
这样调整后,删除操作不会绕过原有规则,所有功能都能正常保留。
内容的提问来源于stack exchange,提问作者ypanos
相关产品推荐
相关产品推荐

