java - 如何访问 Firebase 中具有随机密钥的节点?
问题描述
我想访问 projectImageUrl,但问题出在 Projects 和项目 Image URL 之间,每个项目都有一个随机键,因此每个项目都应该有一个唯一的名称,那么我该如何访问 projectImageUrl?
解决方案
如何访问 Firebase 中具有随机密钥的节点?
这实际上不是随机的。正如我在您的数据库架构中看到的那样,您使用作为用户对象的键,即与日期和时间连接的 UID 的值。日期和时间都已经是 User 对象的一部分。确实没有必要将它们与 UID 一起添加,因为 UID 已经是唯一的。无需添加任何其他内容以使其“更加”独特。我的建议是只使用 UID,仅此而已。在这种情况下,要获取 projectImageUrl 节点下存在的 URL,请使用以下代码行:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference projectImageUrlRef = rootRef.child("Projects").child(uid).child("projectImageUrl");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String url = ds.getValue(String.class);
Log.d("TAG", url);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
projectImageUrlRef.addListenerForSingleValueEvent(valueEventListener);
logcat 中的结果将是 projectImageUrl 节点下存在的 URL。如果需要保留日期和时间,请将 projectImageUrlRef 更改为:
DatabaseReference projectImageUrlRef = rootRef.child("Projects").child(uid + date + time).child("projectImageUrl");
该日期应包含“2020 年 10 月 6 日”的值和“16:37:9”的时间。
推荐阅读
- c# - 如何在c#中获取像素颜色
- javascript - 使用 php 过滤 CRUD 表
- java - 分组字符串 - Java
- spring-boot - Grafana singlestat 和 transformNull
- javascript - 无法使用 .not() 或 :not 正确
- c# - UWP Storyboard 和 CallMethodAction 的仅发布例外
- reactjs - 添加或删除后 Redux Firestore 状态未更新
- powershell - 从powershell 4中的zip文件中删除文件
- java - 使用光标加载程序按下后退按钮时应用程序崩溃
- git - 如何从空存储库到 HEAD 选择 git 修订范围?