繁体   English   中英

Firebase RealTimeDatabase 查询提供没有值的快照

[英]Firebase RealTimeDatabase Query gives snapshot with no values

我有一个查询问题,我想在一周的第一天和最后一天之间获取数据,为此我已将日期转换为毫秒。 但是快照中没有值。 有人知道我做错了什么吗?

我已经检查过了,两个日期(第一个和最后一个)之间至少有一个毫秒的量。 毫秒已保存为双精度。

我在下面发布了我的部分代码和数据库。

referenceIncome = database.getReference("/users");
double firstDateWeek = firstDate.get(Integer.parseInt(current));
double endDateWeek = endDate.get(Integer.parseInt(current));

Query query = referenceIncome.child(userID).child("Money").orderByChild("millisecond").startAt(firstDateWeek).endAt(endDateWeek);

query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {


{
  "users" : {
    "8ps1o0nA95bRr1aMKDwnXQEoZxA3" : {
      "Money" : {
        "17-01-2021" : {
          "-MRG-KinX5n6_MflOqm8" : {
            "date" : "17-01-2021",
            "id" : "-MRG-KinX5n6_MflOqm8",
            "millisecond" : 1610898037725,
            "money" : 800,
            "spendOrEarn" : "Expenses",
            "type" : "groceries"
          },
          "-MRGX-Qhm2383hNRTKc6" : {
            "date" : "17-01-2021",
            "id" : "-MRGX-Qhm2383hNRTKc6",
            "millisecond" : 1610906863156,
            "money" : 77,
            "spendOrEarn" : "Expenses",
            "type" : "groceries"
          },
          "-MRGX1cG87WLK-KcaKl-" : {
            "date" : "17-01-2021",
            "id" : "-MRGX1cG87WLK-KcaKl-",
            "millisecond" : 1610906872152,
            "money" : 3456,
            "spendOrEarn" : "Expenses",
            "type" : "groceries"
          }
        }
      }
    }
}

您正在/users/$uid/Money上运行查询。 这意味着 Firebase 直接在该位置下获取子节点,并且:

  1. 对它们的millisecond属性进行排序。
  2. 然后仅返回您使用startAtendAt指示的切片。

问题是/users/$uid/Money下的直接子节点是/users/$uid/Money/17-01-2021并且该节点没有millisecond属性。

Firebase 查询适用于直接子节点的平面列表,因此,如果您想按用户查询 Money 节点:将它们作为平面列表直接存储在/users/$uid/Money下,而不是按日期分组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM