我正在使用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位数字的组合。我怎么能得到它?
答案 0 :(得分:1)
您应该使用Firebase实时数据库(documentation)的过滤容量并构建如下所示的查询并使用正确的侦听器(请参阅文档,上一个链接):
Query query = databaseReference.child("posts").child("Warden/ashokbhawa").startAt('Apr 18, 2018').endAt('Apr 19, 2018');
当然,您可以将正确的值作为变量传递。
附注:我建议您将日期存储为YYYYMMDD