Firebase Realtime 数据库数据可以读取但不出现在数据库中?

Posted

技术标签:

【中文标题】Firebase Realtime 数据库数据可以读取但不出现在数据库中?【英文标题】:Firebase Realtime database data can be read but does not appear in the database? 【发布时间】:2021-10-18 16:50:54 【问题描述】:

我目前遇到一个我不太了解的问题,但我会尽力解释它,我已将 android Studio 从版本 3.6.1 升级到版本 4.1.3,从那时起我的 Firebase 实时数据库不再正常工作,当我将数据添加到数据库时,Firebase 控制台中没有出现任何内容,但是当我在我的应用程序中检索数据时,它出现但不是从第一次开始,我不得不离开应用程序并返回它以查看数据出现在我的 Recycler 视图中(在 android studio 升级之前一切正常,包括写入和读取数据库)。

这是我用来写入数据库的代码:

 FirebaseDatabase database =    FirebaseDatabase.getInstance();

 database.setLogLevel(Logger.Level.DEBUG);

 DatabaseReference usersRef = database.getReference("Users");

usersRef.child("+201111111111").setValue(new UsersHelperClass("+201111111111","",""));

usersRef.child("+202222222222").setValue(new UsersHelperClass("+202222222222","",""));

这是我的实时数据库规则:


 "rules": 
 ".read": "now < 1631052000000",  // 2021-9-8
 ".write": "now < 1631052000000",  // 2021-9-8


ps:如果需要任何文件/代码,请告诉我,我会提供。

我试图解决这个问题的方法:

1- 查看我的 Logcat 以了解发生了什么,但我不能。

2- 在 Google 和 *** 上搜索以找到类似的问题,但我没有。

3- 将代码和资源文件复制到新项目,删除旧项目。

4- 删除 Firebase 控制台项目并启动一个新项目并将我的应用添加到其中。

5- 删除我项目的构建文件。

6- 更改我的项目的包名。

这些是我记得的,因为我一周以来一直在解决这个问题,所有这些步骤都没有解决我的问题,我在这里感到迷茫,所以我将非常感谢任何帮助理解和解决它。

【问题讨论】:

那里有很多可能出错的地方。我的第一个调试步骤是编写一个更简单的值,例如usersRef.child("+201111111111").setValue(true)。如果这不起作用,您知道问题不在您的UsersHelperClass 中,我们可以停止关心。下一步是对数据库的 URL 进行硬编码,而不是依赖于来自您的 google-services.json 的 URL。你可以这样做:FirebaseDatabase database = FirebaseDatabase.getInstance("URL to database here") 你试过 Frank van Puffelen 在他的评论中提到的吗? 感谢@FrankvanPuffelen 的回复,UserHelperClass 或代码通常没有任何问题,因为在我升级 Android Studio 之前一切正常,并且我之前多次测试过该代码,我尝试硬编码数据库的 URL,但注意已更改 【参考方案1】:

以防万一其他人遇到这个问题,我回到了 Android Studio 3.6.1,最后问题解决了,我能够继续从事该项目,所以基本上就像其他人建议我在工作时不要升级 Android Studio在一个项目上。

【讨论】:

以上是关于Firebase Realtime 数据库数据可以读取但不出现在数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

在单个 Activity 中使用 2 个或更多 Firebase Realtime DB

从 firebase-realtime-database 过滤数据

如何使用 Firebase RealTime 数据库根据特定类别获取项目集合

Flutter firebase realtime db 在规则中使用 displayName

Firebase Realtime Web 始终返回 True 到 snapshot.exists()

我们如何在android中使用firebase Realtime数据库动态设置选项卡布局的选项卡标题?