SNM*_*SNM 0 android kotlin firebase google-cloud-firestore
所以,我试图只获取 24 小时前的文档,我在我的数据库中保存了一个时间戳值作为时间戳
data class Order(@ServerTimestamp val timestamp:Date? = null)
Run Code Online (Sandbox Code Playgroud)
现在,当我查询时,我想带回时间戳大于 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)
}
Run Code Online (Sandbox Code Playgroud)
正如您在此处看到的,我获取当前时间,向其中添加 24 小时并检查存储在 Firebase 中的时间戳是否大于该时间,但是当我在 Firestore 中将时间戳更改为前一天时,我没有收到任何文件,是什么发生?
这一行正在计算一个长整数,它是自 unix 纪元以来的毫秒数,未来 24 小时:
val oneDay = Date().time + (24 * 60 * 60 * 1000)
Run Code Online (Sandbox Code Playgroud)
但是,数据库中的时间戳字段是 Firestore 时间戳类型字段。Firestore 不会将整数与时间戳进行比较。您只能将时间戳与时间戳进行比较。您可以从 SDK 传递 Date 或 Timestamp 对象以进行比较。尝试将数字转换为日期:
whereGreaterThan("timestamp", new Date(oneDay))
Run Code Online (Sandbox Code Playgroud)
还要记住,您的 Date 表示未来某一天的某个时刻,但您的问题描述说您想要时间戳最多过去一天。在这种情况下,您可能希望减去一天而不是添加一天。
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |