2016-05-31 20 views
6

ho questa struttura:Regole Firebase Sicurezza: .indexOn ID univoci

"post": { 
    "groupMember": { 
    "-KHFHEHFWDB1213": "true", 
    "-KSJHDDJISIS011": "true", 
    "-KJSIO19229129k": "true" 
    } 
} 

voglio .indexOn gli id ​​groupMember unica generate automaticamente.

Ho provato a fare questo:

"post": { 
    ".indexOn": "groupMember" 
    ... 
} 

ma sto ancora questo errore:

considerare l'aggiunta di ".indexOn": "groupMember/-KHFHEHFWDB1213" a/inviare

Quindi, come posso aggiungere un .indexOn su un ID univoco?

UPDATE:

Questa è la query che uso (in Swift):

postRef.queryOrderedByChild("groupMember/\(uid)").queryEqualToValue(true).observeEventType(.Value, ...) 
+1

Correggimi se ho sbagliato qualcuno, ma sono abbastanza sicuro che indicizzi i tasti per impostazione predefinita? – Chris

+0

Puoi fornire la query che stai utilizzando che ti sta dando un errore di indicizzazione? Chris ha ragione nel dire che Firebase indicizza le chiavi per impostazione predefinita, quindi la mia ipotesi è che la query stessa non sia ben formata. –

+0

@MichaelBleigh Ho aggiornato il mio post – leonardloo

risposta

1

Per interrogare o meno uno dei tasti riportati valore "true" (notare che, come digitato i dati la struttura è una stringa, non è un valore booleano - qualcosa da guardare fuori per) ti consigliamo di creare regole di sicurezza in questo modo:!

{ 
    "post": { 
    "groupMember": { 
     "$memberId": {".indexOn": ".value"} 
    } 
    } 
} 

E quindi utilizzare queryOrderedByValue("true") sul percorso /post/groupMember. Importante da notare è $memberId nelle regole, che dichiara una chiave jolly che rappresenta i tuoi ID autogenerati, e .value, che indica che invece di indicizzare su una proprietà figlio (se la tua struttura aveva un altro livello di nidificazione) vuoi indicizzare sulla foglia immediata valore del nodo.

+0

Grazie per la risposta. Tuttavia, se lo chiedo in base al percorso '/ post/groupMember' come faccio a ottenere le informazioni relative ai genitori, come le cose su'/post/message'? – leonardloo

+0

Penso di non essere molto chiaro su cosa esattamente stai cercando di fare. Stai tentando di filtrare un gruppo di post se l'utente corrente è un membro del gruppo? In tal caso, dovresti ristrutturare i tuoi dati e probabilmente denormalizzare. In caso contrario, cosa stai cercando di realizzare esattamente? –

+0

Quindi con la risposta qui, l'attributo .value fa riferimento al valore groupMember? Se ho un jolly $ uid al posto del groupMember e volevo indicizzarlo, il valore .indexOn: .value è ancora applicabile qui? – Silmarilos

Problemi correlati