如何在Firebase中对数据进行排序和过滤?

时间:2018-03-06 14:38:09

标签: swift firebase firebase-realtime-database

我想进行查询以使bookings节点下的所有子节点包含子键TimeStampDateAndTime,并且子节点的值在1519912278和1520689878之间。由于某种原因,它返回即使下面显示的JSON对象中的键TimeStampDateAndTime的值在此范围内,也为null 1519912278 - 1520689878.

let ref = dbRef.child("Cleaners").child(self.uidOfTextField!).child("bookings").queryOrdered(byChild: "TimeStampDateAndTime").queryStarting(atValue: 1519912278).queryEnding(atValue: 1520689878)

finalRef.observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in         
    print("snapshot.value is  line 81 is \(snapshot.value)") //prints (<null>)
}

"Cleaners" : {
    "05MSPgkP1ddhFqXDRjIB4npGEPV2" : {
        "bookings" : {
             "392239680" : {
                  "BookingAmount" : “10”,
                  "BookingCompleted" : "false",
                  "TimeStampDateAndTime" : "1520526600",
           },
       }
   },
 }

2 个答案:

答案 0 :(得分:1)

&#34; TimeStampDateAndTime&#34;在你的情况下是一个字符串,所以它的排序不会给出预期的结果。您可以将其类型更改为Int。

答案 1 :(得分:1)

它给你null,因为它不存在,你需要做这样的事情:

queryOrdered(byChild: "TimeStampDateAndTime").queryStarting(atValue: 152).queryEnding(atValue: 152\uf8ff)

这将为您提供在开头有152个的所有TimeStampDateAndTime