火力地堡的Android无法根据对象的值来查询项目 - 返回所有值

问题描述:

我一直在火力地堡支持Android应用程序,这是我的datatbase看起来像火力地堡的Android无法根据对象的值来查询项目 - 返回所有值

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

它的工作很好,但在火力地堡的文档,我读了它是安全,保持数据归一化和扁平所以后来我想出了最高的一个。当我尝试查询像它下面返回所有对象,而不是所期望的,

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文档真的让人困惑,并没有帮助我。

当您拨打orderBy...equalTo或其他方法之一时,Firebase会返回一个新的Query对象。所以你需要捕获一个新的变量中的查询:

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

query.addListenerForSingleValueEvent(new ValueEventListener() { 
+0

谢谢我不得不使用查询对象,但你提供的确切代码不起作用。修改答案。 – satheeshwaran

+0

请通过验证我所做的数据规范化是否好,并且可以随规模扩展来帮助我。谢谢您的帮助。 – satheeshwaran