首页 文章

从特定节点firebase数据库中检索数据

提问于
浏览
1

我正在开发一个Android应用程序,现在我被困在从特定节点检索数据,就像我想从每个节点只检索一个值 . 数据库结构如下所示 .

Database Structure

如何检索Firebase数据库创建的第二个唯一ID?

2 回答

  • 0

    首先创建一个POJO类来获取所需的值,它应该与在Firebase中使用它们的方式相同 .

    public class AppointmentsPojo {
    
        private String appointmentStuts;
    
        public AppointmentsPojo(){
    
        }
    
    
        public String getAppointmentStuts() {
            return appointmentStuts;
        }
    
        public void setAppointmentStuts(String appointmentStuts) {
            this.appointmentStuts = appointmentStuts;
        }
    
    }
    

    然后只需循环 Appointments 以获取每个 appointmentStuts

    mDatabase.child("Appointments").addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {
        //Looping inside Appointments to get each appointmentsStuts
        for(DataSnapshot snapshot: dataSnapshot.getChildren()){
        AppointmentsPojo ap = snapshot.getValue(AppointmentsPojo.class);
        //Getting each appointmentStuts
         String appointmentStuts = ap.getAppointmentStuts();
         //To get each father of those appointments 
         String key = snapshot.getKey();
    
          Log.e("Data: " , "" + appointmentStuts );
    
           }
    
      }
    
      @Override
      public void onCancelled(DatabaseError databaseError) {
        System.out.println("The read failed: " + databaseError.getCode());
      }
    });
    

    mDatabase的位置

    DatabaseReference mDatabase;
    
    mDatabase = FirebaseDatabase.getInstance().getReference();
    
  • 1

    要仅从第一个对象获取 appointmentStuts 的值,请使用以下代码:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    Query query = rootRef.child("Appointments").child(PostKey).limitToFirst(1);
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String appointmentStuts = ds.child("appointmentStuts").getValue(String.class);
                Log.d(TAG, appointmentStuts);
            }
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d(TAG, databaseError.getMessage());
        }
    };
    query.addListenerForSingleValueEvent(valueEventListener);
    

相关问题