首页 > 解决方案 > 如何从 Firebase 数据库中获取这些数据

问题描述

我正在开发一个 android 应用程序,它的数据存储在 firebase 数据库中。 name=dataSnapshot.child(email).child(dt+" "+).getValue(Warden.class).getName(); 在这个片段中,我想从数据库中访问节点,其中节点被命名为:当前日期和任意数字的组合。

我可以使用 Date 类(使用 'dt' 变量)获取当前日期,但我无法获得数字,即我无法获得搜索该节点的组合。我尝试使用正则表达式,但做不到。我想获得一个以当前日期开头并以 3 位数字结尾的字符串。请帮助我,谢谢。

-Warden
   |-ahilyabhawan
   |-ashokbhawan
       |-Apr 18, 2018 339
           |-bhawan: "Ashok Bhawan"
           |-date: "May 6, 2018"
           |-gender: "Male"
           |-intime:"14 : 28 pm"
           |-mobile:"9785648810"
           |-room_no: "359"
           |-student_id: "Coer ID: 14041044"

       |-Apr 24, 2018 349
       |-May 1, 2018 129
       |-May 11, 2018 156
       |-May 2, 2018 223

      DateFormat df=DateFormat.getDateInstance(DateFormat.MEDIUM);
      dt=df.format(d);
  databaseReference.addListenerForSingleValueEvent(new ValueEventListener() 
  {     
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if(dataSnapshot.hasChild(email)){


                name=dataSnapshot.child(email).child(dt+" "+"?").getValue(Warden.class).getName();    //***** line 1 *****
                student_id=dataSnapshot.child(email).child(dt+" "+"?").getValue(Warden.class).getStudent_id();
                if(name!=null&&student_id!=null) {
                    progressDialog.dismiss();
                    arrayList.add(dt + " \n" + name + "\n" + student_id);
                }


            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

现在我面临的问题是我想访问包含当前日期和任何 3 位数字的“ ashokbhawan ”节点的每个子节点。现在问题是我能够获取当前日期,但我需要的是当前日期和任何 3 位数字的组合。我怎么能得到那个?

标签: javaregexfirebasefirebase-realtime-database

解决方案


您应该使用 Firebase 实时数据库(文档)的过滤能力并构建如下查询并使用适当的侦听器(请参阅文档,上一个链接):

Query query = databaseReference.child("posts").child("Warden/ashokbhawa").startAt('Apr 18, 2018').endAt('Apr 19, 2018');

当然,您可以将正确的值作为变量传递。


旁注:我建议您将日期存储为 YYYYMMDD


推荐阅读