【问题标题】:Retrieve firebase data within a range of 1 week在 1 周范围内检索 Firebase 数据
【发布时间】:2021-01-16 00:10:40
【问题描述】:

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

        }
    });

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

【问题讨论】:

  • 为此您必须在前端手动获取记录并查询。
  • 我现在想知道如何以编程方式完成它
  • 只需先获取所有记录,然后迭代并获取结果。

标签: java firebase android-studio firebase-realtime-database android-calendar


【解决方案1】:

实时数据库不是为复杂的类似 SQL 的查询而设计的。

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

如果你需要比这更复杂的东西,你需要

  1. 获取所有结果并在您的前端/应用代码中过滤它们

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

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

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2015-11-19
    • 2018-05-13
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多