【问题标题】:Firebase query for timestamp in subkey not workingFirebase 查询子键中的时间戳不起作用
【发布时间】:2021-11-17 05:37:00
【问题描述】:

我有以下代码:

DatabaseReference ref = lib.getFirebaseDatabase().getReference("data/newquestions");
        Query q = ref.orderByChild("date/timeUTC");
        long t = dtStart.getTimeUTC();
        q.startAt(t);
        q.addListenerForSingleValueEvent(new ValueEventListener() {

这是样本数据:

  {
  "date" : {
    "time" : 1632050827132,
    "timeUTC" : 1632043627132,
    "timezone" : "Europe/Berlin"
  },
  "enddate" : {
    "time" : 1632137227132,
    "timeUTC" : 1632130027132,
    "timezone" : "Europe/Berlin"
  },
  "enumcontacttypes" : [ "Public" ],
  "id" : 117,
  "public" : true,
  "userid" : 8
}

我总是得到相同数量的值,而与我指定的日期无关。 startAt() 函数无效。

【问题讨论】:

    标签: java android firebase firebase-realtime-database google-cloud-platform


    【解决方案1】:

    由于我看不到更详细的数据库架构,因此我不能说预期的查询是否会按预期工作。我能说的是,Firebase 实时数据库查询是不可变的。这意味着您不能更改现有查询的属性。如果您通过调用.startAt(t) 方法更改该值,那么它将成为一个新查询。因此,最简单的解决方案是将所有方法调用链接在一个 Query 对象中,如下所示:

    DatabaseReference ref = lib.getFirebaseDatabase().getReference("data/newquestions");
    long t = dtStart.getTimeUTC();
    Query q = ref.orderByChild("date/timeUTC").startAt(t); //Added to the initial query
    q.addListenerForSingleValueEvent(/* ... /*);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2020-06-06
      • 2020-04-17
      相关资源
      最近更新 更多