java - 如何从Firebase获取每个月的所有数据以在Android中进行计算

标签 java android firebase firebase-realtime-database

有多个日期和每个日期的数据。每个日期和数据都存储在唯一的键下。

"Data":{
   "K2ngvpioRUYF4bRM07Da5cbAjE53":{
      "-M3jNjCuGdMCwt1Czpwz":{
         "Date":"2020-3-30",
         "Scale":"3"
      },
      "-M3jQWxm7z0EQYgkVenX":{
         "Date":"2020-4-29",
         "Scale":"4"
      },
      "-M5hxn-rCJICUvRcMZJu":{
         "Date":"2020-4-24",
         "Scale":"2"
      }
   }
}

我想计算每月的秤总数(重点是每月)。而不是使用“startAt”和“endAt”:

   Query query = ref.orderByChild("Date").startAt("2020-3-1").endAt("2020-3-31");
   Query query2 = ref.orderByChild("Date").startAt("2020-4-1").endAt("2020-4-30");

有没有更好的方法来循环所有月份和年份?如果我有不同年份和月份的日期,我认为上面的代码很难。

最佳答案

如果您的 ref 对象指向数据库根目录,则您的引用不正确,因为您缺少其中的 Data 和用户 ID。看到 DataK2ngvpioRUYF4bRM07Da5cbAjE53 出现在您的树中吗?两个 child 都应该添加到您的查询中。除此之外,您为 Date 属性使用的 String 值实际上也不正确。您应该使用时间戳,正如我在以下帖子中的回答中所解释的:

话虽如此,正确的查询应该如下所示:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query query = ref.child("Data").child(uid) //Added both children
    .orderByChild("Date")
    .startAt(startLongValue)
    .endAt(endLongValue);

关于java - 如何从Firebase获取每个月的所有数据以在Android中进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61534517/

相关文章:

android - 提高最低SDK版本会阻止用户下载任何APK Android吗?

node.js - 部署不同环境时如何更改admin.initializeApp

swift - 我怎样才能得到 [String :Any] dictionary that I got from my firebase database? 中的状态值不是零

java - 为什么我的 Spring JUnit 测试规则没有运行?

java - 选择排序不起作用

java - 调用 2-3 次的方法 1 秒后仅调用一次方法

android - 如何在 Eclipse 中打开示例 Android SDK 应用程序

java - Simpleadapter(带有子项的 JSON)

java - 如何执行具有异步任务返回值的方法?

ios - swift iOS : ImageUrl in Firebase database