![](/img/trans.png)
[英]How to retrieve a value from a sub-field of a map field in a document in Firestore DB?
[英]How to retrieve data from a map inside a particular document of firestore
該文檔是用戶 ID,我想從 map“地址”中檢索特定用戶的“地址 1”。
private FirebaseFirestore mfirestore;
DocumentReference docRef;
private FirebaseAuth mAuth;
private FirebaseUser user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_address);
mAuth = FirebaseAuth.getInstance();
user = mAuth.getCurrentUser();
uid = user.getUid();
docRef = mfirestore.collection("user").document(uid);
}
@Override
protected void onStart() {
super.onStart();
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
if (document.getData().get("Address")!=null){
String Address=document.getData().get("Address").toString();
}
}
} else {
Toast.makeText(UserAddress.this, task.getException().toString(), Toast.LENGTH_SHORT).show();
}
}
});
我已經檢索了整個“地址”,但無法找到單獨獲取用戶地址 1 的方法。
Map 類型的文檔字段在 Java 中顯示為Map<String, Object>
類型。 如果您正在訪問 map,您可以簡單地轉換它:
Map<String, Object> address = (Map<String, Object>) document.getData().get("Address");
現在您可以使用 map 訪問其各個字段:
String address1 = (String) address.get("Address1");
理想情況下,您還應該在強制轉換之前檢查每個值的類型是否為空,否則您可能會拋出異常。
這就是你在 Kotlin 中的做法。
db.collection("app-version")
.get()
.addOnSuccessListener { result ->
for (document in result) {
val versionNum = document.get("versionNumber").toString()
binding.txtAppVersion.text = versionNum
}
}
.addOnFailureListener { exception ->
Toast.makeText(
this, "No such document", Toast.LENGTH_SHORT
)
.show()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.