2016-09-22 2 views
1

Я хочу, чтобы мой vanNumber быть уникальнымFirebase не умеет писать правила безопасности для Unique данных

//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. Вы можете проверить, существует ли определенный ключ и, если ключ имеет определенное значение. Но это не поможет вам в этой модели данных.

Как обычно, решение заключается в выборе модели данных, соответствующей вашим требованиям. Если фургоны являются уникальными и имеют идентификатор, затем сохраните список заклиненного под этим идентификатором:

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

Этой структуру данных гарантируют что фургон номер уникален, без написания каких-либо правил безопасности для него.

+0

спасибо, что Frank это действительно сработало. – Hemendra