英文:
Query from firebase database from specific date
问题
我想查询特定日期的数据,数据的格式如下。
databaseReference = database.getReference("TopScoreUpdate");
databaseReference.orderByChild("date/date").equalTo(29).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.i("entityCheck", String.valueOf(dataSnapshot.getChildrenCount()));
for (DataSnapshot snapshot1:dataSnapshot.getChildren()) {}
对于上面的代码,我没有得到结果,它显示没有找到结果。我在Firebase规则的“.Index”中声明了。
英文:
I want to query for data of a specific date the formatting of data is specified below.
[![][1]][1]
databaseReference = database.getReference("TopScoreUpdate");
databaseReference.orderByChild("date/date").equalTo(29).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.i("entityCheck", String.valueOf(dataSnapshot.getChildrenCount()));
for (DataSnapshot snapshot1:dataSnapshot.getChildren()) {}
for the above code written I am not getting result it shows no result found. I have declared in ".Index" of Firebase rule.
答案1
得分: 0
以下是翻译好的内容:
这是因为你缺少一个子项。为了解决这个问题,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference topScoreUpdateRef = rootRef.child("TopScoreUpdate");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
long date = ds.child("prful/date/date").getValue(Long.class);
Log.d("TAG", "date: " + date);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //不要忽视错误!
}
};
topScoreUpdateRef.orderByChild("prful/date/date").equalTo(29).addListenerForSingleValueEvent(valueEventListener);
请注意,在你的引用中需要添加对 prful
的显式调用。日志中的结果将会是:
date: 29
在日志中会打印出与它在你的数据库中出现的次数相同的次数。
英文:
> for the above code written I am not getting result it shows no result found.
This is happening because you are missing a child. To solve this, please use the following lines of code:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference topScoreUpdateRef = rootRef.child("TopScoreUpdate");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
long date = ds.child("prful/date/date").getValue(Long.class);
Log.d("TAG", "date: " + date);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
topScoreUpdateRef.orderByChild("prful/date/date").equalTo(29).addListenerForSingleValueEvent(valueEventListener);
See, the explicit call to prful
should be added in your reference. The result in the logcat will be:
date: 29
Printed out as many times as it appears in your database.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论