gpt4 book ai didi

Firebase 安全规则 : Validate which fields are allowed in an object

转载 作者:行者123 更新时间:2023-12-03 06:44:04 25 4
gpt4 key购买 nike

我试图阻止将不需要的字段添加到我的用户对象中。--> 用户可以拥有电话和用户名(但不是必须 --> newData.hasChildren(['phone', 'username']) 在这里不起作用)。我首先尝试了这个:

"users": {
"$uid": {
"$other": {
".validate": "['phone', 'username'].indexOf($other) > -1"
}
}
}

由于数组,我收到错误:(

所以我就想过做这样的事情,但是如果我有很多潜在的领域,那真的不太好

"$other": {
".validate": "$other === 'phone' || $other === 'username'"
}

最后,我在 Firebase 中创建了一个名为“rules”的节点,并执行了以下操作:

"rules": {
"users": {
"fields": {
"phone": true,
"username": true
}
}
}

然后我的用户对象中的新验证规则是:

"$other": { 
".validate": "root.child('rules/users/fields/'+$other).val() === true"
}

我的问题是:这是限制字段名称的正确方法吗?

非常感谢您的回答 :) 我对 Firebase 还很陌生,但尝试它很有趣!

最佳答案

要将 Firebase 中的对象限制为仅具有指定的键,请尝试使用一个额外的通配符子项来匹配任何尚未指定的属性,如果它包含以下不匹配的属性之一,则拒绝写入:

"rules": {
"users": {
"$userid": {
".validate": "newData.hasChildren(['phone', 'username'])",
"phone": {
".validate": "newData.isNumber()"
},
"username": {
".validate": "newData.isString()"
},
"$other": {
".validate": false
}
}
}
}

关于Firebase 安全规则 : Validate which fields are allowed in an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901644/

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