在1周内检索Firebase数据

问题描述

我想在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) {

        }
    });

我找不到在给定范围内检索数据的方法。有人请帮忙。

enter image description here

解决方法

实时数据库不适用于类似SQL的复杂查询。

不确定您的问题是否涉及按周分组结果。如果只需要一组在某个日期开始并在另一个日期结束的结果,则可以像描述in this answerthe spec那样使用startAt(...)endAt(...)

如果您需要更复杂的东西,则需要

  1. 获取所有结果并将其过滤到您的前端/应用代码中

  2. 或使用Cloud Function在服务器上进行过滤,然后 将结果传递到前端。

  3. (不推荐)。您可以将周数(即45_2020)记录为文档中的单独字段,并以此过滤。这很麻烦,您必须相信前端在该字段中输入了正确的信息。