java - Firebase 无法识别用于设置值的字符串键
问题描述
我有一个加载了 FirebaseDatabse 项目(用户)的 ListView 活动。单击 ListView 的一个项目后,它会将相关用户的 item-Key(FirebaseDatabase Hash)传递给另一个 Activity,其中有一个确认按钮。单击确认按钮后,应在用户项键指定的 FirebaseDatabase 的项字段中设置一个确认值(“已接受”)。
问题是它没有。我的意思是,如果我使用 CURRENT userId 哈希,它会在 FirebaseDatabase 的 userId 字段中完美地设置“接受”,但如果我使用另一个项目用户的密钥,它就不会这样做。谁能告诉我为什么?
这是单击确认按钮的确认活动的一部分:
riderKey = intentGet.getStringExtra("riderKey");
Log.i("KeySetRider", riderKey);
Log.i("KeySetUser", MainActivity.userId);
FirebaseDatabase.getInstance().getReference().child("users").child(String.valueOf(riderKey )).child("Request").setValue("Accepted");
FirebaseDatabase.getInstance().getReference().child("users").child(String.valueOf(MainActivity.userId )).child("Request").setValue("Accepted");
这是我在确认活动中获得的密钥:
2020-02-02 22:15:58.268 10620-10620/com.example.uberapp I/KeySetRider: XhNENH3g68SsrtPhmdFmY
2020-02-02 22:15:58.268 10620-10620/com.example.uberapp I/KeySetUser: klaunWpq4ASLfiduCoU2d
] 1
] 2
解决方案
抱歉,我无法评论这个问题,所以我必须在这里写下我的评论,尽管我并没有真正发布解决方案。
我注意到您从 logcat 输出中复制的键与屏幕截图中出现的键不完全相同。它们似乎被截断了。知道为什么吗?如果在代码中您尝试使用正确的常量而不是变量,它会起作用吗?您如何接收/处理这些 ID 可能是个问题。
另一种假设可能是数据库中没有正确设置用户权限,因此只允许用户编辑他们的记录。不确定您的应用程序是否可以这样做,因为您只发布了这两条记录,我们不知道它们的存储位置以及您拥有的数据库配置。
推荐阅读
- python - 类实例可以带参数吗?
- excel - VBA 正在绕过我的 for 循环而不执行它
- flutter - 在 Flutter 应用上制作收藏功能按钮
- java - 如果一个参数是原始参数而另一个参数可能来自列表,则模拟方法
- unreal-engine4 - 在第一人称游戏中实现小游戏 - UE4
- bash - 在 find -exec 中使用命令替换
- entity-framework - How to use .NET Framework dll buit with Entity Framework 6.0 in .NET Core application
- go - Get all go structs from a file or package
- swiftui - Mapbox iOS Navigation SDK Not Working With SwiftUI
- python - How to convert variable to a regex string?