【问题标题】:can't write data to realtime database firebase无法将数据写入实时数据库 firebase
【发布时间】:2021-02-27 18:02:20
【问题描述】:

我在将数据写入 Firebase 中的实时数据库时遇到问题。我的设置如下:

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  val actionBar: ActionBar = supportActionBar!!
  actionBar.hide()
  val database = FirebaseDatabase.getInstance()
  val myRef: DatabaseReference = database.getReference("Course")
  Timber.d(myRef.toString() + " hello there")
  myRef.setValue("testUser2")
}

控制台打印出我的数据库的路径:

2021-02-27 09:49:39.137 18688-18688/com.cpen391.flappyBird.moduleDemoApp D/SignUpActivity: https://flappybird-7dea8-default-rtdb.firebaseio.com/Course你好

似乎与我的数据库的连接正常,但它只是没有更新数据:

我在这里感到困惑,任何帮助将不胜感激!

【问题讨论】:

  • 用户是否有写入数据库的权限?您可以通过收听setValue 调用的完成在代码中检测到这一点。参见示例:gist.github.com/puf/4a94a01e3c2510298ee46d0a7f90ab75
  • 我尝试使用 Log.d 调用 addOnCompleteListener ,但没有打印任何内容。规则设置为真。顺便说一句,读写。
  • 如果完成处理程序永远不会被调用,这意味着调用永远不会在服务器上完成。您确定该设备具有稳定的互联网连接吗?
  • 你说得对,我的朋友!问题是中国的互联网无法访问外部世界......难怪它永远不会完成请求......
  • 很高兴听到这解释了您所看到的。 ???如果您enable disk persistence,您可能会获得相当不错的初始开发人员体验,因为 Firebase 会将待处理的写入保存到本地磁盘。您将无法与其他客户端同步。

标签: android firebase firebase-realtime-database


【解决方案1】:

步骤:

  1. 通过附加完成侦听器来检查写入是否被服务器拒绝,如下所示:https://gist.github.com/puf/4a94a01e3c2510298ee46d0a7f90ab75
  2. 如果从不调用完成处理程序,这意味着调用永远不会在服务器上完成。检查您是否有可以访问 Firebase 服务器的稳定互联网连接。
  3. 如果您确实遇到了与服务器的连接问题,您可以enable disk persistence 获得相当不错的初始开发人员体验,因为 Firebase 然后会将挂起的写入持久化到本地磁盘。您将无法与其他客户端同步。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多