Firestore订单混合使用无法进行分页的查询

时间:2019-02-26 03:14:57

标签: ios swift firebase google-cloud-firestore

let currentDateTime = Date()

let time = Timestamp(date: currentDateTime)

guard let userUid = Auth.auth().currentUser?.uid else { return}

Firestore.firestore()
         .collection("\(user)/\(userUid)/\(timelinePath)")
         .order(by: "endDate").start(after: [lastKey ?? ""])
         .whereField("endDate", isLessThan: time).limit(to: 5)

我正在尝试使用endDate字段(这是一个时间戳)进行订购,然后仅获取具有经过日期的数据,我使用查询whereField检查该日期。问题似乎在orderby。它不订购时间戳。可以解决这个问题还是有其他方法吗?

编辑-是否可以通过TimeStamp订购?我无法与其他任何订单一起订购,因为第一个查询是通过时间戳进行的,因此订单必须遵循相同的查询

Here is my data structure

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助。以下代码设置了时间戳记日期,并将从FireStore检索该时间之前的所有事件。

let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd"
let dateString = "2019/02/20"
let timestamp = formatter.date(from: dateString)

let timelineRef = self.db.collection("Timeline")
    .order(by: "endDate")
    .whereField("endDate", isLessThan: timestamp)
    // you can add .limit(to: 3) if you only want the 3 oldest for example

timelineRef.getDocuments() { (querySnapshot, err) in
    if let err = err {
        print("Error getting documents: \(err)")
    } else {
        for document in querySnapshot!.documents {
            let docId = document.documentID
            let name = document.get("selfKey") as! String
            print(selfKey)
        }
    }
}