无法从 firebase 获取过去 30 天的数据
Posted
技术标签:
【中文标题】无法从 firebase 获取过去 30 天的数据【英文标题】:Unable to fetch tha last 30 days data from firebase 【发布时间】:2022-01-09 21:49:48 【问题描述】:我正在尝试从 firebase 获取最近 30 天的帖子,并且我正在尝试使用帖子中的时间戳来做到这一点。但我无法获取数据。
Kotlin 代码:
var database:DatabaseReference=Firebase.database.reference
database.orderByChild("timestamp")
val postListener = object : ValueEventListener
@RequiresApi(Build.VERSION_CODES.O)
override fun onDataChange(dataSnapshot: DataSnapshot)
// Get Post object and use the values to update the UI
for(postSnapshot in dataSnapshot.children)
if(postSnapshot.child("timestamp").value.toString().toInt()>Time.from(Instant.now().minusSeconds(30*24*60*60)).toString().toInt())
val Post = postSnapshot.getValue(PostsModel::class.java)
postsList.add(Post!!)
override fun onCancelled(databaseError: DatabaseError)
// Getting Post failed, log a message
Timber.d("failed")
Firebase 数据结构:
【问题讨论】:
“我无法获取数据”真的很难解决,而且 Stack Overflow 是一个出了名的低效交互式调试器。如果您在调试器中运行代码,它会到达onDataChange
吗?如果是这样,它会进入for
循环吗?如果是这样,它从timestamp
读取的值是您所期望的吗?如果是,30 天前的值是您期望的值吗?
不,它不会进入 onDataChange
请多一些自我探索,因为 Stack Overflow 是一个出了名的低效交互式调试器。那么它会到达onCancelled
吗?如果这也没有发生,当您附加侦听器时,是否有任何内容写入您的应用程序的 logcat?
【参考方案1】:
您正在声明一个侦听器,但您没有将它附加到数据库。直到您致电 addValueEventListener
、addListenerForSingleValueEvent
或 get()
。
我建议研究 reading data 上的 Firebase 文档,因为它展示了如何执行这些操作。
【讨论】:
【参考方案2】:您需要添加一个条件,即时间必须在一个月之前,然后您将生成一个合适的数据列表。错误也可能出现在您未提供的其他级别(数据组织或您未连接侦听器)
Firebase.database.reference
.whereGreaterThan("timestamp", Calendar.getInstance().also it.add(Calendar.MONTH, -1) .timeInMillis)
【讨论】:
以上是关于无法从 firebase 获取过去 30 天的数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Bigquery - 如何从 Firebase 事件表中查询昨天的数据和过去 7 天的数据
如何有效地从 Firebase 实时数据库中获取 7 天、30 天的摘要?
PHP - 如何从 MySQL 中选择过去 30 天的记录 [重复]