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订购?我无法与其他任何订单一起订购,因为第一个查询是通过时间戳进行的,因此订单必须遵循相同的查询
答案 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)
}
}
}