gpt4 book ai didi

validation - 避免创建额外的 child Firebase

转载 作者:行者123 更新时间:2023-12-01 09:50:12 25 4
gpt4 key购买 nike

我是 firebase 的新手,我想知道如何解决有关 hasChildren() RuleDataSnapshot 的问题以及如何验证数据的创建。

数据库示例:

 {
"visitors" : {

"-KP4BiB4c-7BwHwdsfuK" : {
"mail" : "aaa@mail.com",
"name" : "aaa",
}
.....
}

规则:

{
"rules": {
"visitors": {
".read": "auth != null",
".write": "auth.uid != null",
"$unique-id": {
".read": "auth != null ",
".write": "auth != null",
".validate": "newData.hasChildren(['name','mail'])",
}
}

}
}

据我所知,如果我想创建数据,数据字段必须具有相同的名称才能通过规则验证。例如 :如果我按“名称”更改“名称”,并尝试用他们的 child 创建一个新节点,那么规则就我所能理解的那样有效。我想知道 ¿ 如果我手动添加要创建的新字段会发生什么?

例如:

//Add extra fields which are not actually present
var data = {name : "xxx",mail:"xxx@mail.com",extra1:222,extra:333};
firebase.database().ref('visitors/').push(data);

结果是:

  "visitors" : {
"-KP4BiB4c-7BwHwdsfuK" : {
"mail" : "aaa@mail.com",
"name" : "juan",
"extra1":222,
"extra2":333
}
}

所以我的问题是如何避免为每个节点创建额外的子节点?我以为规则做到了。

提前致谢。

最佳答案

您的验证规则规定您的帖子必须有至少 那些 child ,而不是只有 那些 child 。为确保不能添加其他 child ,您必须将以下内容添加到您的规则中:

{
"rules": {
"visitors": {
".read": "auth != null",
".write": "auth.uid != null",
"$unique-id": {
".read": "auth != null ",
".write": "auth != null",
//This line says the new data must have ATLEAST these children
".validate": "newData.hasChildren(['name','mail'])",
//You can add individual validation for name and mail here
"name": { ".validate": true },
"mail": { ".validate": true },
//This rule prevents validation of data with more child than defined in the 2 lines above (or more if you specify more children)
"$other": { ".validate": false }
}
}
}
}

看看here再举个例子。

关于validation - 避免创建额外的 child Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38944544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com