簡體   English   中英

如何從 Firestore 的特定文檔中的 map 檢索數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM