2017-06-06 4 views
1

Ich habe eine mehrspaltige Indexeigenschaft filter_active in dieser Struktur.Validate multicolumn -Eigenschaft Firebase-Datenbankregeln

"books": { 
    "435085rfddsfiou4r80": { 
     "name": "Harry Potter 1" 
    } 
} 

"review": { 
    "540398fsdo9043": { 
     "filter_active": "true|435085rfddsfiou4r80|false" 
     "active": true, 
     "archived": false, 
     "book_id": "435085rfddsfiou4r80" 
     "review": "good book" 
    } 
} 

Jetzt möchte ich die Sicherheitsregeln verwenden, um die filter_active Eigenschaft zu validieren. Ich muss überprüfen, ob das Buch im Buchknoten existiert. Auch die Buch-ID im Filter muss der book_id im Review-Objekt entsprechen.

In den Firebase-Datenbankregeln gibt es keine Split-Methode. Außerdem habe ich versucht, einen dynamischen Regex zu erstellen, aber ich glaube, das ist nicht möglich.

Gibt es trotzdem kann ich dieses Problem beheben?

Antwort

0

Wenn der unerwünschte Text in filter_active immer eine kleine Anzahl bekannter Wörter oder Zeichen ist, können diese durch wiederholte Verwendung von replace() eliminiert werden. Zum Beispiel, zu beseitigen true, false und |:

newData.child('filter_active').val().replace('true','') 
    .replace('false','').replace('|','') 

Sie dann für die Existenz eines Buchs mit dem resultierenden Schlüssel überprüfen:

root.child('books').child(newData.child('filter_active').val() 
     .replace('true','').replace('false','').replace('|','')).exists()