android - Firebase 规则如何在其父级被删除时防止添加或更新值

标签 android firebase firebase-realtime-database firebase-security

我在问我是否有这个 firebase 数据库

Misters
 + 7m1fyYchDscr8tUeI13uPXvdDvM2
 + gvTVc3gwRfTz3WL48vTGiiiTKZ22
 - vWZ55LGiraaIErIiiVN4NVQc6Eh1
     active_type:true
     age: 27

如果其父节点被删除,如何防止添加新节点或更新现有节点 (vWZ55LGiraaIerIiiVN4NVQc6Eh1)?

例如我有阻止更新的规则

{
    "rules": {
        ".read": true,
        ".write": "auth != null",
        "Misters": {
            "$Misterid": {
                "active_type:true": {

                    ".validate": "(data.val() == null) || (data.isString() && (data.val().length == 0))"
                }
            }
        }
    }

但如果找不到父项,我想阻止

最佳答案

  1. 将所有添加的 $Misterid 存储在名为 MistersAdded 的新节点中。这可以通过使用云功能自动完成
  2. 在下面添加规则

这包括一个 exists() 方法,该方法将检查 MistersAdded map 以查看它是否已被创建。如果您希望能够让用户删除 map ,请添加 '|| data.val() == null' 在写规则后面。

{
    "rules": {
        ".read": true,
        ".write": "auth != null",
        "Misters": {
            "$Misterid": {
                "active_type:true": {
                    ".write": !root.child('MistersAdded').child($Misterid).exists()
                    ".validate": "(data.val() == null) || (data.isString() && (data.val().length == 0))"
                }
            }
        }
    }

关于android - Firebase 规则如何在其父级被删除时防止添加或更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46193945/

相关文章:

android - 如何解决android中的SOAP Error 500

Android 为什么从 BackStack 返回后 switchCompat.setChecked(true) 不工作

android - meteor run 安卓设备停止工作

javascript - Firebase 和 Vue Js 生命周期钩子(Hook)

适用于 Web 的 Firebase 云消息传递

java - 使用 DecimalFormat 格式化 Double 以在没有科学记数法的情况下打印

没有 'new' 无法调用 AngularFire 身份验证持久性

ios - 如何在 Firebase 中创建自动递增键?

java - 如何更新 Firebase 数据库中的子节点数据?

javascript - 如何将新数据添加到 Firebase 数据库中的现有数据?