如何从Firebase数据库中仅获取一个数据?

时间:2019-07-05 04:05:02

标签: java android firebase firebase-realtime-database

我想知道如何从密钥列表中获取一个数据

我知道钥匙

但是我只想从保存的数据中获取

我不明白为什么它为空

值“ petcode”中的已保存键

enter image description here

这就是我要获取的数据宠物名

reference = FirebaseDatabase.getInstance().getReference().child("Pets").child(firebaseUser.getUid()).child(petcode);


        reference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                petname = String.valueOf(dataSnapshot.child("petname"));
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

但是当我看到日志时 petname值为null 我如何从中获取数据?

2 个答案:

答案 0 :(得分:1)

尝试:-

ref.child("-LiCZpsymgNgtNcCinpHR5").child("petname").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        try {
            if (snapshot.getValue() != null) {
                try {
                    Log.e("TAG", "" + snapshot.getValue()); // your name values you will get here
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("TAG", " it's null.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {
        Log.e("onCancelled", " cancelled");
    }
});

答案 1 :(得分:0)

    DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Pets").child(firebaseUser.getUid()).child(petcode).child("petname");
        databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                String petname = dataSnapshot.getValue(String.class);                       
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                conformDialog.setMessage("Something bad happened!, try again");
                conformDialog.setCancelable(true);
                conformDialog.setCanceledOnTouchOutside(true);
            }
        });

并且不要对单个事件使用 addValueEventListener ,它将永久监视