无法从 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】:

您正在声明一个侦听器,但您没有将它附加到数据库。直到您致电 addValueEventListeneraddListenerForSingleValueEvent 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 天的记录 [重复]

如何使用窗口函数获取每个日期值的今天、过去 7 天、过去 30 天的指标?

LINQ 查询以获取过去 30 天的记录

sql语句从数据库中获取恰好过去5天的数据