2015-01-21 6 views
18

Sto usando Geofire per fare un cerchioQuery in una certa area. Con i miei osservatori istituito sto tornando in posizioni, tuttavia, con la posizione che ottengo anche un "Utilizzo di un indice non specificato. Considerare l'aggiunta di" .indexOn ":" g ""Utilizzo di un indice non specificato. Considera l'aggiunta di ".indexOn": "g"

Il mio db per il mio geofire si presenta come questo karmadots/geofire/{} eventi

"rules": { 
    "karmadots": { 
    ".read": true, 
    ".write": true, 
    "geofire": { 
     "$events": { 
     ".indexOn": ["g"] 
     } 
    } 
    } 

ho anche provato:

"rules": { 
    "karmadots": { 
    ".read": true, 
    ".write": true, 
    "geofire": { 
     ".indexOn": ["g"] 
    } 
    } 
} 

Entrambi non fanno il messaggio andare via. C'è qualcos'altro che posso provare a leggere o provare come esempio?

Grazie per l'aiuto.

EDIT:

Il mio percorso è xxxxx.firebaseio.com/karmadots/geofire/{keys}

questo è come mi interrogo:

func setupListeners(query: GFQuery){ 

    // Event is in initial area or entered area 
    query.observeEventType(GFEventTypeKeyEntered, withBlock: { (key: String!, location: CLLocation!) in 
     println("Key '\(key)' entered the search area and is at location '\(location)'\n") 
    }) 

    // Event left area 
    query.observeEventType(GFEventTypeKeyExited, withBlock: { (key: String!, location: CLLocation!) in 
     println("Key '\(key)' left the search area\n") 
    }) 

    // Event moved but is still in area 
    query.observeEventType(GFEventTypeKeyMoved, withBlock: { (key: String!, location: CLLocation!) in 
     println("Key '\(key)' moved in the search area and is at location '\(location)'\n") 
    }) 

} 
+1

Quest'ultimo sembra più probabile che sia corretto. Ma, per sicurezza, puoi mostrarci la domanda che esegui? Preferibilmente, mostra l'intero percorso dalla radice agli eventi effettivi utilizzati nella query sul Geofire. –

+0

@FrankvanPuffelen Ho modificato il mio post originale e incluso la query. Non sono sicuro se questo è ciò che intendevi per il mio intero percorso. – jshah

+0

Hmm ... quando eseguo una normale query Firebase, non ottengo alcun errore: 'nuova Firebase ('https://karmadots.firebaseio.com/karmadots/geofire/') .orderByChild ('g') .startAt ("9q8yywcp39"). EndAt ("9q8yywcp39"). LimitToFirst (3) .once ('valore', funzione (s) {console.log (s.val());}) '. Questo è essenzialmente ciò che fa anche GeoFire. –

risposta

34

Rimozione le parentesi intorno [ "g "] risolve il problema. Ecco la parte finale del codice:

"rules": { 
    "karmadots": { 
    ".read": true, 
    ".write": true, 
    "geofire": { 
     ".indexOn": "g" 
    } 
    } 
} 
+0

questa è l'unica risposta funzionante che potrei trovare. Grazie! –

+0

Il messaggio di registro riportato nell'OP ha la sintassi corretta, non è sicuro di come sono state coinvolte le parentesi. – Andy