2016-09-22 71 views
1

我希望我的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

您不能检查,如果在一定存在收集Firebase安全规则中的值。如果某个密钥具有某个值,您可以检查某个密钥是否存在。但是这在这个数据模型中无助于你。

像往常一样,解决方案是选择一个符合您要求的数据模型。如果车是独一无二的,有一个ID,然后存储ID下键列表:

vanwithagent : { 
    "sf" : { // vanNumber 
    "agentMobile" : "sdfs", 
    "agentName" : "sdfsdf", 
    "isAgentAssignedWithTask" : false, 
    "vanName" : "fsdf", 
    "vanPresentLocation" : { 
     "currLattitude" : "N/A", 
     "currLongitude" : "N/A", 
     "pin" : "N/A" 
    } 
    } 
} 

这个数据结构保证,面包车号是唯一的,而无需编写任何安全规则吧。

+0

谢谢弗兰克它确实工作。 – Hemendra