Firebase数据库,找到现有值

时间:2017-02-16 12:15:28

标签: java android firebase firebase-realtime-database

我有一个结构的firebase数据库,如下所示:

[unique key1]

        [key1]
            value1 : abc
            value2 : def

        [key2]
            value1 : xyz
            value2 : pqr

我知道唯一键unique key1,我需要知道此数据库中abc中是否有值value1。我已经编写了如下所示的代码,但它总是返回零。

 FirebaseDatabase.getInstance().getReference().child(unique key1).orderByChild("value1").equalTo("abc").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if (dataSnapshot.getChildrenCount() == 0) {
                      Toast.makeText(context, abc, Toast.LENGTH_SHORT).show();
            } else {
               Toast.makeText(context, "Not found", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

任何人都可以指出我的代码有什么问题。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

你真的很亲密。在这种情况下,您需要orderByChild而不是orderByValue,因为您实际上正在寻找具有特定值的孩子。所以:

FirebaseDatabase.getInstance().getReference()
    .child(unique key1).orderByValue().equalTo("abc")
    .addListenerForSingleValueEvent(new ValueEventListener() {
        public void onDataChange(DataSnapshot snapshot) {
            for (DataSnapshot item: snapshot.getChildren()) {
                System.out.println("Found matching value in "+item.getKey());
            }
        }