因此,我试图获取仅24小时的文档,我将时间戳记值保存在数据库中作为时间戳记
data class Order(@ServerTimestamp val timestamp:Date? = null)
现在,当我查询时,我想带回其时间戳大于24小时但查询不成功的文档,我已经在控制台上检查并创建了所有查询
suspend fun getIncompletedOrders(): Resource<List<Order>> {
val reminderList = mutableListOf<Order>()
val oneDay = Date().time + (24 * 60 * 60 * 1000)
val query = FirebaseFirestore.getInstance()
.collection("orders")
.whereEqualTo("uid",FirebaseAuth.getInstance().currentUser?.uid)
.whereIn("status", listOf(1,2,4,5,6))
.whereGreaterThan("timestamp",oneDay)
.get().await()
for(document in query.documents){
reminderList.add(document.toObject(Order::class.java)!!)
}
return Resource.Success(reminderList)
}
如您在这里看到的,我得到了当前时间,将其添加24小时,并检查Firebase中存储的时间戳是否大于该时间,但是将时间戳更改为前一天的时间时,我没有收到任何文档Firestore,怎么了?
答案 0 :(得分:3)
此行正在计算一个长整数,这是自unix时代以来的毫秒数,未来24小时:
val oneDay = Date().time + (24 * 60 * 60 * 1000)
但是,数据库中的时间戳字段是Firestore时间戳类型字段。 Firestore不会将整数与时间戳进行比较。您只能将时间戳与时间戳进行比较。您可以从SDK传递Date或Timestamp对象进行比较。尝试将数字转换为日期:
whereGreaterThan("timestamp", new Date(oneDay))
还请记住,您的日期表示将来一天中的某个时刻,但是您的问题描述指出,您希望过去的一天作为时间戳记 。在这种情况下,您可能想减去一天而不是增加一天。