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