2017-02-14 2 views
0

私はeventsの配列を持っています。 のイベントには、artistid="?"があります。 1人のアーティストIDがxイベントで見つかる可能性があります。私は与えられたidを持つアーティストを持つすべてのイベントを探したい。iOS firebase-databaseクエリ

は、これまで私が試した:

[[[[[[FIRDatabase database] reference] child:@"events"] 
             queryOrderedByChild:@"artist"] 
             queryEqualToValue:artist.uid 
             childKey:@"id"] 
    observeEventType:FIRDataEventTypeValue 
    withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 

    } 
]; 

しかし、私は何か間違ったことをやっています。下の図は階層を示しています。
ありがとうございます。

enter image description here

答えて

0

queryEqualToValue:artist.uidあなたが何を考えて実行しません。 VALUEがartist.uidに等しいレコードを返します。つまり、artist.uid1の場合、値が1のレコードが返されます。値が15であるIDフィールドを持つレコードではありません。全体の値が1のレコードです。同様に、レコードはオブジェクトであってはならず、その値を持つ実際の数値でなければなりません。

Firebaseは、どこのフィールドがある値に等しいアーティストに問い合わせることができる「どこ」メカニズムを提供しません。この関数呼び出し名は少し混乱しますが、この目的のためのものではありません。ある

/events: 
    /by-artist: 
     /1: 
      /0: { event details... } 

は、あなたがアーティストIDが必要になります:あなたがやっていたものを達成したい場合は、次のようなアーティストのIDが実際のREFの一部であったようにあなたのデータを、再構築する必要があります実際のパス構造の一部として、/events/by-artist/ARTISTID/EVENTIDを取得することができます。 Firebaseの標準的なプラクティスは、メインイベントデータを/events/EVENTIDのようなマスターコレクションに格納し、次にサブコレクション内のIDのコレクションを格納することです。これにより、データが変更された場合に複数の場所を二重に更新する必要がなくなります。

関連する問題