2016-11-30 63 views
0

我有以下Firebase数据库结构,我想要检索具有“Mike 22”主机的整个对象。使用Firebase基于1属性检索整个对象?

enter image description here

这是不是在ValueEventListener事件,所以我没有访问DataSnapshot。我如何根据查询检索对象?我想用一种SQL风格来完成,你可以输入SELECT object FROM objects WHERE host = "Mike 22"。有没有办法做到这一点?

目前我有参考数据库,如下所示:

mDatabase = FirebaseDatabase.getInstance().getReference().child("objects"); 

回答

2

这是覆盖在Sorting and filtering data Android的指南中。使用orderByChildequalTo

mDatabase = FirebaseDatabase.getInstance().getReference().child("objects").orderByChild("host").equalTo("Mike 22"); 
+0

好吧,在得到那个'Query'之后,我该怎么办?我尝试添加一个childEventListener,但由于没有更改数据,因此它没有执行任何操作。我希望该查询返回我创建的类的一个对象 – Michael

+0

@Michael,如果您的查询匹配任何数据,那么将为每个现有子节点调用一次子侦听器,然后再次进行任何更改。您也可以使用'addListenerForSingleValueEvent'来读取整个列表一次。 –

+0

当您连接到正确的位置并且有权读取数据时,'ChildEventListener'和'ValueEventListener'都会触发。要检测权限,请参阅http://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database/22652/detect-errors-when-reading-数据上的Android#吨= 201611302029432848424 –