Firebase数据库两个属性之间的查询 - Android

时间:2017-03-24 14:08:46

标签: android firebase firebase-realtime-database

我正在尝试使用firebase数据库,并且会出现一个问题。

在发帖之前,我读过thisthisthis github,但没有想到如何在Android上执行此操作(如果可以在js上执行此操作,为什么不在Java上执行此操作? )

我有一个关于键的GUID的注释,我有两个时间戳属性,startTime和endTime。 我从用户那里得到了实际的时间戳,我需要检索用户时间戳在startTime和endTime之间的所有注释。

以下是firebase上的实体示例:

备注:

{
  "notes": {
    "aedbd23a-ca8e-4160-88a0-1d68f92b34cf": {
      "description": "Note test",
      "startTime": 1490353200,
      "endTime": 1490396400
    }
  }
}

在普通的SQL上,我可以通过在startTime和endTime之间使用userTime的notes来实现这一点。我如何在firebase上实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可以使用Ticket::with('requesters') ->with('requesters.company') ->orderBy('subject','asc')->paginate(10); link

Query: 创建一个约束为仅返回值小于或等于给定值的子节点的查询,使用给定的orderBy指令或优先级作为默认值。

endAt(String value): 创建一个约束为仅返回值大于或等于给定值的子节点的查询,使用给定的orderBy指令或优先级作为默认值。

答案 1 :(得分:0)

{
"notes": {
  "aedbd23a-ca8e-4160-88a0-1d68f92b34cf": {
    "description": "Note test",
    "startTime": 1490353200,
    "endTime": 1490396400,
    "startTime_endTime": 1490353200_1490396400   
    }
  }
}

查询将是

ref.child("notes")
.orderByChild("startTime_endTime")
.startAt("1490353200_1490353200")
.endAt("1490353250_1490353250")

在firebase中,当您需要更多过滤器时,请使用复合键 试试这个并告诉我它是否有效。在开始时给予小值和endat给予更大的价值。