您如何进行实时数据库查询,以检查用户的时间戳记是否在今天?

时间:2020-11-10 11:56:02

标签: swift firebase firebase-realtime-database

因此,假设RTDB中的每个用户都有一个称为标题的子级。这个孩子的时间是自1970年以来的秒数。现在,您要显示所有具有今天时间戳记的用户。您需要使用今天的时间戳查询所有用户的数据库,因为您不想将所有用户都发送到电话然后进行过滤。

下面,在第一个代码中,我当前将所有用户发送到设备然后进行过滤的方式。第二组代码是我尝试首先查询今天有时间戳的所有用户的位置,即在将所有时间戳发送给用户设备之前。

一个想法是每天自动生成一个Firebase条目,该条目仅代表一天。然后将其与用户的所有时间戳进行比较。我的问题是时区不同。

var dict = CLLocation()
         ...
dict = CLLocation(latitude: lat, longitude: lon)
        ...
let thisUsersUid = Auth.auth().currentUser?.uid
self.refArtists2 = Database.database().reference().child("people");                                            self.refArtists2.observe(DataEventType.value,  with: {  snapshot in
if snapshot.childrenCount>0{
   self.people.removeAll()
            for people in snapshot.children.allObjects as! [DataSnapshot] {
                if people.key != thisUsersUid {
                let peopleObject = people.value as? [String: AnyObject]
                let peoplecaption = peopleObject?["caption"] as? Int //is timestamp
                let coordSnap12 = people.childSnapshot(forPath: "caption").value as? Int ?? 0
                let date = Date(timeIntervalSince1970: TimeInterval(coordSnap12)/1000.0)
                //let secondsInDay = 86400
                **if Calendar.current.isDateInToday(date)** {

 var ppp: String!  ////this should be the uid of all users in db

    let people = Database.database().reference().child("people").child(self.ppp).child("captions")
people.observe(DataEventType.value, with: {  snapshot in
    let captionss = snapshot.value as? Int ?? 0
    let date = Date(timeIntervalSince1970: TimeInterval(captionss)/1000.0)       
    let query1 = Database.database().reference().child("people").queryOrdered(byChild: "caption").where?(isDateInToday(date))

1 个答案:

答案 0 :(得分:0)

正如vadian所说,您将要执行范围查询以获取那些节点。在Firebase Realtime数据库中,您可以使用stepSizequeryStarting(atValue:)方法执行此操作,因此它类似于:

queryEnding(atValue:)