Firebase验证可确保子项存在,并且在初始写入和更新时具有正确的值

时间:2016-06-14 04:07:38

标签: firebase firebase-realtime-database firebase-security

我如何确保电子邮件和已创建的字段始终存在,并且电子邮件始终具有有效的电子邮件值?如果我使用newData.hasChildren(['email','created']),如果我只是更新记录的电子邮件字段,这将在更新时失败。

"uPrivate": {
    "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid",
        ".validate": "root.child('u/'+$uid).exists()",
        "email": {
            ".validate": "root.child('u/'+$uid).exists()",
        },
        "created": {
            ".validate": "root.child('u/'+$uid).exists()",
        }
    }
}

1 个答案:

答案 0 :(得分:1)

newData变量包含该位置的新数据,因为它将在写入后存在。来自createNode

  

newData变量包含写操作成功时将存在的新数据。 newData表示正在写入的新数据和现有数据的合并结果。

因此,对于任何不在更新中的数据,它将包含现有值。