2017-04-10 7 views
0

は、Androidアプリを支持し、これは私のdatatbaseがFirebaseアンドロイドは - 私はFirebaseに取り組んできたすべての値

{ 
    "Category" : { 
    "-KhHnKaR2oS0JKNrAQWr" : { 
     "CategoryDescription" : "Ne est", 
     "CategoryName" : "New Test Category", 
     "CategoryThumbnail" : "/New Test Category/New Test Category-thumb.jpg", 
     "ThumbnailFileType" : "jpg" 
    }....... 
    }, 
    "Images" : { 
    "-KhHBBI4QloAEBDxcUac" : { 
     "Category" : "-KhBGZnCQ5xhYVbP0dtd", 
     "-KhBGZnCQ5xhYVbP0dtd":true, 
     "CategoryName" : "please", 
     "FileType" : "jpg", 
     "FileURL" : "/please/NewAddTest.jpg", 
     "Name" : "NewAddTest" 
    }, 
    "-KhI1wWJK8YUApa0Iv9q" : { 
     "Category" : "-KhHnKaR2oS0JKNrAQWr", 
     "-KhHnKaR2oS0JKNrAQWr":true, 
     "CategoryName" : "New Test Category", 
     "FileType" : "jpg", 
     "FileURL" : "/New Test Category/Test Mem.jpg", 
     "Name" : "Test Mem" 
    }..... 
    } 
} 

のように見え、私はでカテゴリを取得することができたものです返しますキー「カテゴリー」を参照して、最初は私がCateogryと画像に埋め込ますなわち、

"-Kh8YUXwK0sg3OyoTyAU" : { 
    "CategoryDescription" : "The legendary evergreen Vadivelu", 
    "CategoryName" : "Vadivelu", 
    "CategoryThumbnail" : "/Vadivelu/v2.png", 
    "Images":{"-KhH5nJjaji2OtOPVeQF" : { 
    "Category" : "-KhBGZnCQ5xhYVbP0dtd", 
    "-KhBGZnCQ5xhYVbP0dtd":true, 
    "FileType" : "jpg", 
    "FileURL" : "/please/New jpg", 
    "Name" : "New " 
}} 
} 

を持っていたそれはうまくいったが、私は正規化されたデータを保持する方が安全であることを読んで、その平坦化Firebaseドキュメントでは、私は思い付きました最新のものは一番上にある。シングル - 私はそれがすべてのオブジェクトではなく、必要なものを返し、以下のようなクエリしようとすると、

FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    final DatabaseReference imageRef = database.getReference("Images"); 
    imageRef.keepSynced(true); 
    try { 
    imageRef.child("Images"). 
    orderByChild("Images/Category").equalTo(category.memeCategoryID); 
    imageRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      //Returns all objects. 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

はまた、私はこれを実行しようとしました、私はここにするつもり何

imageRef.child(category.CategoryID).equalTo(true); 

は複数で実装していますカテゴリにタグ付けされたすべての画像をフェッチすると、どんな助けにも感謝します。私は非常に多くのスレッドを見ており、Firebaseの公式文書は本当に混乱していて、少し助けにはならない。

答えて

1

orderBy...,equalToまたは他の方法のいずれかを呼び出すと、Firebaseは新しいQueryオブジェクトを返します。したがって、新しい変数でそのクエリを取得する必要があります:

Query query = imageRef 
    .child("Images") 
    .orderByChild("Images/Category") 
    .equalTo(category.memeCategoryID); 

query.addListenerForSingleValueEvent(new ValueEventListener() { 
+0

ありがとう、私はクエリオブジェクトを使用しなければならなかったが、あなたが提供した正確なコードは機能しませんでした。答えを変更する。 – satheeshwaran

+0

私がやったデータの正規化が良いかどうかを確認して助けてください、それはサイズで拡大縮小できますか?助けてくれてありがとう。 – satheeshwaran

関連する問題