有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检索子值firebase

System.out.println(ref.child("mostafa_farahat22@yahoo.com").child("_email"));

*我试图获取child的值,但每次都会获取该值的URL 如何在我尝试使用此代码时获取此URL的值,但它会获取我想要的URL值


共 (2) 个答案

  1. # 1 楼答案

    你从错误的角度看待这个概念。 在使用ref.child("mostafa_farahat22@yahoo.com").child("_email")时,您只是简单地指向数据库中的某个特定位置而已。 如果要检索特定位置的数据,请考虑这2种方式。

    首先,如果只想检索一次数据,可以执行以下操作:

     DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
     DatabaseReference mostafa = ref.child("Users").child("mostafa_farahat22@yahoo.com").child("_email");
    
     mostafa.addListenerForSingleValueEvent(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
        String email = dataSnapshot.getValue(String.class);
        //do what you want with the email 
     }
    
     @Override
     public void onCancelled(DatabaseError databaseError) {
    
     }
     });
    

    或者,您可能希望实时检索该值,并在数据库值更改的同时使用该值,所有这些都在同一时间内,只要中的值发生更改,就可以使用以下方法:

    mostafa.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String email = dataSnapshot.getValue(String.class);
    
        display.setText(email);
    }
    
    @Override
    public void onCancelled(DatabaseError databaseError) {
    
    }
    });
    

    请注意这两种方法之间的差异。第一个仅用于一次检索,第二个用于在值更改时检索数据

    请记住,我发布的代码只是模板,可能需要使用它们

  2. # 2 楼答案

    使用ref.child("mostafa_farahat22@yahoo.com").child("_email")只需设置对对象的引用。看一下java firebase documentation to retrieve data

    要获取数据,需要为引用设置一个侦听器

    ref.child("mostafa_farahat22@yahoo.com").child("_email").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            // data available in snapshot.value()
        }
        @Override
        public void onCancelled(FirebaseError firebaseError) {
        }
    });