Firebase无法为唯一数据写入安全规则
我希望我的Firebase无法为唯一数据写入安全规则,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我希望我的vanNumber是唯一的 //vanwithagent is after root "/vanwithagent" vanwithagent : { "-KSHJyDyI49RpZwSkdg1" : { // "agentMobile" : "sdfs", "agentName" : "sdfsdf", "isAgentAssignedWithTask" : false, "vanName" : "fsdf", "vanNu
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"
}
}
}
此数据结构保证van编号是唯一的,无需为其编写任何安全规则。您无法检查Firebase安全规则中的某个值集合中是否存在某个值。您可以检查某个键是否存在以及某个键是否具有某个值。但这在这个数据模型中并没有帮助
通常,解决方案是选择一个符合您需求的数据模型。如果货车是唯一的且具有id,则存储该id下键入的列表:
vanwithagent : {
"sf" : { // vanNumber
"agentMobile" : "sdfs",
"agentName" : "sdfsdf",
"isAgentAssignedWithTask" : false,
"vanName" : "fsdf",
"vanPresentLocation" : {
"currLattitude" : "N/A",
"currLongitude" : "N/A",
"pin" : "N/A"
}
}
}
此数据结构保证了van编号是唯一的,而无需为其编写任何安全规则