我可以使用orderByChild
和equalTo
来获取子项中特定值的数据(很酷,它也适用于嵌套子项)
private void getData() {
try {
final DatabaseReference database = FirebaseDatabase.getInstance().getReference();
database.child(Constants.TABLE_TASKS).orderByChild("user/id")
.equalTo("somevalue")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Timber.d(dataSnapshot.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
是否有一种简单的方法来获取未找到特定值(基本上类似于
notEqualTo("somevalue")
)的数据? 最佳答案
在Firebase查询模型中,您不能将不等式过滤为值。
但是您可以测试是否缺少任何值(本质上是:缺少属性)。例如,使用此数据模型:
{
child1: {
"user": {
"id": 1,
"name": "puf"
}
},
child2: {
"user": {
"id": 2,
"name": "abe"
}
},
child3: {
"user": {
"id": 3
}
}
}
我可以使用以下命令查询没有
user/name
属性的 child :ref.orderByChild('user/name').equalTo(null)
这导致唯一一个没有名字的 child :
随意与我的jsbin一起玩,看看您是否能进一步学习:http://jsbin.com/liyibo/edit?js,console
更新:我知道我之前已经回答了这个问题,但是之前找不到。这是骗子:is it possible query data that are not equal to the specified condition?。似乎我在这里犯了一个错误,因为显然我正在测试以上代码中是否缺少属性。
关于android - Firebase:根据条件查询以排除数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39195191/