我希望我的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())"
}
}
}
}
}
答案 0 :(得分:0)
您无法检查Firebase安全规则中某些值集合中是否存在值。如果某个键具有特定值,您可以检查某个键是否存在和。但是这并不能帮助你掌握这个数据模型。
通常,解决方案是选择符合您要求的数据模型。如果vans是唯一且具有id,则存储键入该id的列表:
vanwithagent : {
"sf" : { // vanNumber
"agentMobile" : "sdfs",
"agentName" : "sdfsdf",
"isAgentAssignedWithTask" : false,
"vanName" : "fsdf",
"vanPresentLocation" : {
"currLattitude" : "N/A",
"currLongitude" : "N/A",
"pin" : "N/A"
}
}
}
此数据结构保证 van编号是唯一的,而不为其编写任何安全规则。