2016-05-25 22 views
1

と一致する値を返すために、クエリ以下のように書かれています。 friendDisplayNameは「someguy1」をされている可能性が、それはsomeguy1がの一部であったことをオブジェクトに戻っているだろうFIrebase 3私はちょうどfirebase 3を使用するために私のiOSアプリケーションをアップグレードしていないてきたとfirebase 2で働いていたクエリは、もはやfirebase 3.</p> <p>古いクエリで働く子キー/値

fireBaseUser.queryOrderedByChild("displayName").queryEqualToValue(friendDisplayName) 
     .observeSingleEventOfType(.Value, withBlock: { snapshot in 
} 

しかし、同じクエリはfirebase 3では何も返しません。firebase 3は子オブジェクト自体の内部を調べていないので、displayNameが実際の子そのものを探しているからです。たとえば、このクエリに更新すると、期待どおりに戻ります。

database.child("0hfTq3CTtFWNFvG0dmea1rAYpoW2").queryEqualToValue("someguy1", childKey: "displayName").observeSingleEventOfType(.Value, withBlock: { snapshot in 
} 

が、私は子ノードを解析し、など、それらを検索する必要はしたくないので、明らかにこれは私がそれを見る方法一つの解決策は次のようになります...私のためのソリューションとして動作しません。 firebaseはあなたが****は任意の値にすることができるところ、子供が

database.child(*****).etc 

のようなものであることを指定することができます「キャッチすべて」を持っていた場合、実際のクエリで指定する必要はありません。

誰でもこの問題を解決する方法を知っていますか?以下のfirebase JSONレイアウトを添付しました。

ありがとうございます! firebaseによってあなたに提供されたユーザオブジェクトは、現在DisplayNameプロパティを提供していますが、他のほとんどのデータベースと異なり、することはできません - 私は実際にそれには何のドキュメントがそこにいるんにもかかわらず、のdisplayNameがキーワードとして作用することが分かった

{ 
     "users" : { 
     "0hfTq3CTtFWNFvG0dmea1rAYpoW2" : { 
      "displayName" : "someguy1", 
      "pushOptions" : 1, 
      "pushToggle" : false 
     }, 
     "9BATNLBnnoXMOvK4lHtQfmNGJJy1" : { 
      "displayName" : "someguy2", 
      "pushOptions" : 0, 
      "pushToggle" : true 
     } 
     } 
    } 

答えて

2

他のノードや子どもにはdisplayNameを使ってください。できますが、検索することはできません。最後にdisplayNameプロパティをuserNameに変更することですべての問題が解決されました。

これは他の誰にも役立ちます。

+0

私も同じ問題が発生していますが、私はuserNameフィールドに従っていませんか? – RJH

+0

firebaseユーザオブジェクトはdisplayNameプロパティを持っています。これまでは使用されていませんでしたが、ユーザ名の電子メールアドレスを使用するだけです。このため、検索を行うときに予約されたキーワードにはなりません。これはメモリからのもので、私はそれをどのように解決したかを完全には覚えていませんが、基本的にdisplayNameは予約名でuserNameに変更してすべてを修正したためです。あなたが私にいくつかのコードを掘り出す必要があるかどうかを教えてください。 – crashlog

関連する問題