【问题标题】:Unable to fetch tha last 30 days data from firebase无法从 firebase 获取过去 30 天的数据
【发布时间】: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?

标签: android firebase kotlin firebase-realtime-database


【解决方案1】:

您正在声明一个侦听器,但您没有将它附加到数据库。直到您致电 addValueEventListeneraddListenerForSingleValueEvent get()

我建议研究 reading data 上的 Firebase 文档,因为它展示了如何执行这些操作。

【讨论】:

    【解决方案2】:

    您需要添加一个条件,即时间必须在一个月之前,然后您将生成一个合适的数据列表。错误也可能出现在您未提供的其他级别(数据组织或您未连接侦听器)

    Firebase.database.reference
        .whereGreaterThan("timestamp", Calendar.getInstance().also { it.add(Calendar.MONTH, -1) }.timeInMillis)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2017-03-20
      • 2012-12-09
      • 2017-07-06
      相关资源
      最近更新 更多