火力地堡无法写入安全规则的唯一数据
问题描述:
我希望我的vanNumber
是唯一火力地堡无法写入安全规则的唯一数据
//vanwithagent is after root "/vanwithagent"
vanwithagent : {
"-KSHJyDyI49RpZwSkdg1" : { //
"agentMobile" : "sdfs",
"agentName" : "sdfsdf",
"isAgentAssignedWithTask" : false,
"vanName" : "fsdf",
"vanNumber" : "sf",
"vanPresentLocation" : {
"currLattitude" : "N/A",
"currLongitude" : "N/A",
"pin" : "N/A"
}
}
}
规则我已经写:
{
"rules": { //Rules
".read": "auth != null",
".write": "auth != null",
"vanwithagent": {
"$vanwithagentId": {
"vanNumber":{
".validate":"!(root.child('vanwithagent').child(data.child('vanNumber').val()).exists())"
}
}
}
}
}
答
您不能检查,如果值在一定存在收集Firebase安全规则中的值。如果某个密钥具有某个值,您可以检查某个密钥是否存在和。但是这在这个数据模型中无助于你。
像往常一样,解决方案是选择一个符合您要求的数据模型。如果车是独一无二的,有一个ID,然后存储ID下键列表:
vanwithagent : {
"sf" : { // vanNumber
"agentMobile" : "sdfs",
"agentName" : "sdfsdf",
"isAgentAssignedWithTask" : false,
"vanName" : "fsdf",
"vanPresentLocation" : {
"currLattitude" : "N/A",
"currLongitude" : "N/A",
"pin" : "N/A"
}
}
}
这个数据结构保证,面包车号是唯一的,而无需编写任何安全规则吧。
谢谢弗兰克它确实工作。 – Hemendra