web-dev-qa-db-ja.com

不特定のインデックスを使用します。 「.indexOn」の追加を検討してください:「g」

Geofireを使用して、特定のエリアでcircleQueryを実行しています。オブザーバーを設定すると、場所が返されますが、その場所では「指定されていないインデックスを使用しています。「。indexOn」を追加することを検討してください:「g」」

私のgeofireのdbは、karmadots/geofire/{events}のようになります

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

私も試しました:

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

どちらもメッセージを消し去りません。読んだり、例として試すことができる何か他のものはありますか?

助けてくれてありがとう。

編集:

私のパスはxxxxx.firebaseio.com/karmadots/geofire/{keys}です

これは私がクエリする方法です:

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")
    })

}
21
jshah

["g"]の周りのブラケットを取り外すと、問題が修正されます。最後のコードは次のとおりです。

"rules": {
  "karmadots": {
    ".read": true,
    ".write": true,
    "geofire": {
      ".indexOn": "g"
    } 
  }
}
38
jshah