如何从Firebase数据库中获取此数据

时间:2018-05-03 10:01:11

标签: java regex firebase firebase-realtime-database

我正在使用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) {

        }
    });

现在我遇到的问题是我想要访问" ashokbhawan "的所有孩子。包含当前日期和任何3位数字的节点。 现在问题是我能够获得当前日期,但我需要的是当前日期和任何3位数字的组合。我怎么能得到它?

1 个答案:

答案 0 :(得分:1)

您应该使用Firebase实时数据库(documentation)的过滤容量并构建如下所示的查询并使用正确的侦听器(请参阅文档,上一个链接):

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

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

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