java - 如何使用 Android 从 Cloud Firestore 中的地图中检索特定字段?
问题描述
这是保存在 firebase Firestore 中的数据的一部分:
如何在 Java 中fName
从 ( ) 获取 ( ) ?newFriend0
这是代码的一部分。它给出了整个地图。我只想要一个特定的字段,例如 ("jem" for (fName))
Map<String, Object> map = document.getData();
for (Map.Entry<String, Object> entry : map.entrySet()){
if (entry.getKey().equals("Friends")){
f=document.getString("FName");////not worked
Log.d("TAG", entry.getValue().toString());
}
}
解决方案
编辑: 2201 年 7 月 16 日
事实上,有一种更简单的获取数据的方法:
看到你的代码是Java,请看下面的解决方案:
FirebaseFirestore.getInstance().collection("coll").document("9999").get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Map<String, Object> friendsMap = document.getData();
for (Map.Entry<String, Object> entry : friendsMap.entrySet()) {
if (entry.getKey().equals("Friends")) {
Map<String, Object> newFriend0Map = (Map<String, Object>) entry.getValue();
for (Map.Entry<String, Object> e : newFriend0Map.entrySet()) {
if (e.getKey().equals("newFriend0")) {
Map<String, Object> fNameMap = (Map<String, Object>) e.getValue();
for (Map.Entry<String, Object> dataEntry : fNameMap.entrySet()) {
if (dataEntry.getKey().equals("fName")) {
Log.d("TAG", dataEntry.getValue().toString());
}
}
}
}
}
}
} else {
Log.d("TAG", "No such document");
}
} else {
Log.d("TAG", "get failed with ", task.getException());
}
}
});
您的 logcat 中的结果将是:
jem
在屏幕截图中没有看到您收藏的名称,所以我简单地命名了它,coll
但您绝对应该将其更改为正确的名称。
推荐阅读
- javascript - Gulp:如何将输出保存在变量中而不是保存在文件中?
- ios - 在 Swift 的主线程中从服务器获取数据
- spring - 在 Spring 5 中使用 @Bean
- jenkins - 在 Jenkins 的输入表单上将当前 Git 提交 ID(哈希)显示为 defaultValue
- r - split.default(x1, as.vector(gl(length(x1), 2, length(x1)))) 中的错误:第一个参数必须是向量
- javascript - 浏览器不会执行部分 javascript 代码
- excel - 删除不应该的行
- ios - Crashlytics 工作但缺少某些崩溃类型?
- amazon-web-services - 处理 EC2 上的同步请求失败
- angular - 使用具有语义意义并减少混乱的函数重构 Rxjs 可观察对象