火力地堡的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() {
谢谢我不得不使用查询对象,但你提供的确切代码不起作用。修改答案。 – satheeshwaran
请通过验证我所做的数据规范化是否好,并且可以随规模扩展来帮助我。谢谢您的帮助。 – satheeshwaran