2017-01-26 3 views
0

と辞書のためのデータベースを検索:Firebase iOSの - 私はFirebaseで、次の形式のiOSの経由のみで管理するデータベースを持っている固有のID値

hotels/ hotel1/ guests/ *[RandomID]:guest1 [RandomID]:guest2 [RandomID]:guest3 location/ address ... hotel2/ guests/ [RandomID]:guest3 [RandomID]:guest4 location/ address ... hotel3/ guests/ location/ address ... hotel4/ guests/ [RandomID]:guest4 [RandomID]:guest5 location/ address ... hotel5/ guests/ [RandomID]:guest3 location/ address ... ...

私の目標は、セットを返すためにスウィフトのコマンドを実行することです特定のゲストがいるホテルの「ホテル」。たとえば、guest3を確認すると、関連するデータとともにホテル1,2、および5が返されます。この線に沿って何かが一般的に動作します:

Query filterQuery = databaseReference.orderByChild("type").equalTo(true);

が、iOSのドキュメントのequalToコマンドと同等があるように、残念ながら、それはいないようです。次に、iOS Firebaseライブラリの境界でこのタスクを実行する最善の方法は何ですか?

*ランダムIDはゲストエントリがゲスト辞書に挿入されると自動的に生成されます。このブログポストはhttps://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.htmlです。直感的ではないようですが、挿入時に生成される一意のIDを各要素に割り当てることによって、一意性を保証する必要があります。

+2

デビッドの答えは確かに最も一般的なアプローチである:両方向にデータを保存します。私はちょうど[AskFirebaseビデオでこれについての質問](https://youtu.be/HjlQH3RsGcU?t=2m45s)に答えました。より多くの読者がいるなら、ビデオがカバーする答えは次のとおりです:http://stackoverflow.com/questions/41527058/many-to-many-relationship-in-firebase –

答えて

1

あなたはユーザーのために別のセットを持っていないのですが、各ユーザーのために価値のあるホテルがありますか?これらの線に沿って

何か

users: 
    - guest1: 
     - hotels: 
      - hotel1 
      - hotel3 
      - etc. etc. 

私はそれは、特定のユーザーが含まれているかどうかを確認するために、すべてのホテルを経由する必要が良いことはないだろう。あなたはちょうど彼らの[RandomID]に基づいてユーザーに電話し、ホテルをそのように得ることができるこの方法。

0

ここ

let query = ref.queryOrderedByKey().queryEqual(toValue: guestID) 
      query.observe(.childAdded, with: { (snapshot) in 

      } 

このコードを試してみてくださいREF =リファレンスのホテルブランチに

関連する問題