问题描述
我想在1周内检索Firebase数据。我可以查询和获取像今天这样的一天的数据,但是大概1周的时间呢?这是当前用于检索给定日期的数据的代码
String mDate = DateFormat.getDateInstance().format(new Date());
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("expenses").child(onlineUserId);
Query query = reference.orderByChild("date").equalTo(mDate);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
myDataList.clear();
for (DataSnapshot snapshot :dataSnapshot.getChildren()){
Data data = snapshot.getValue(Data.class);
myDataList.add(data);
}
todayItemsAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
我找不到在给定范围内检索数据的方法。有人请帮忙。
解决方法
实时数据库不适用于类似SQL的复杂查询。
不确定您的问题是否涉及按周分组结果。如果只需要一组在某个日期开始并在另一个日期结束的结果,则可以像描述in this answer或the spec那样使用startAt(...)
和endAt(...)
。
如果您需要更复杂的东西,则需要
-
获取所有结果并将其过滤到您的前端/应用代码中
-
或使用Cloud Function在服务器上进行过滤,然后 将结果传递到前端。
-
(不推荐)。您可以将周数(即45_2020)记录为文档中的单独字段,并以此过滤。这很麻烦,您必须相信前端在该字段中输入了正确的信息。