Im having trouble paginating data by its descending timestamp in Firestore (fetch newest first). When I order by
Firestore.firestore().collection("items")
.order(by: "date", descending: true)
.limit(to: 3)
it works, but if I try to refresh it just loads the same data. To paginate I tried
Firestore.firestore().collection("items")
.order(by: "random", descending: true)
.start(after: [lastFetchedItem?.random ?? ""])
.limit(to: 1)
which fetches data based on a random number generator and it paginates perfectly each time so I know its possible. Now if I try
Firestore.firestore().collection("items")
.order(by: "date", descending: true)
.start(after: [lastFetchedItem?.date ?? ""])
.limit(to: 1)
I load the first item but can't paginate to the next. I record the timestamp with Timestamp(date: Date()) and in my dictionary my date is written as
var date: Date?
init(dictionary: [String: Any]) {
self.date = dictionary["date"] as? Date
}
I ended up formatting the date field as a unix timestamp which gave me an Int such as I did with .random. Then I ordered by the date. Works perfectly.