簡體   English   中英

FirebaseDatabase 和 FirebaseFirestore 數據處理和檢索數據的問題

[英]Issue with FirebaseDatabase and FirebaseFirestore Data Manupulate and Retriving data

我的查詢是我想在 Firebase 實時數據庫中保存一些數據,以便我能夠調用這些數據。 請記住,即使重新安裝應用程序,用戶也應該能夠調用數據,並且每個用戶都會有一個特定的孩子。

我正在嘗試制作一個應用程序,用戶將在其中輸入或保存數據到 firebase 並將其顯示在應用程序上,但是,問題是我沒有關於如何從 firebase 檢索數據的想法。

我要檢索的數據是我保存在里面的 ItemName

child(uid).child(ItemName);

每個用戶將在不同的 ItemName 中使用不同的uid保存他們的數據。

問題是我將如何檢索每個用戶的 ItemName,因為 ItemName 會不同,所以我不會有任何特定用戶的 ItemName 數據。 如果我將 ItemName 保存在 SharedPreferences 中,我將能夠檢索它,但是,如果用戶格式化他們的手機或卸載並重新安裝應用程序,那么 SharedPreference 數據將被刪除,那么我將如何從 Firebase 中檢索特定的 ITEMNAME 數據用戶來顯示它。

我的代碼示例:

String email= mAuth.getCurrentUser().getUid();
dbFirestore= FirebaseFirestore.getInstance();
userReference= FirebaseDatabase.getInstance().getReference().child("Users").child(itemName);

在此處輸入圖像描述

如果我們將路徑重定向到那里,是否有任何方法或 function 檢索數據而不指定默認路徑之類的子路徑名

databaseReference = FirebaseDatabase.getInstance().getReference().child(uid).child(""); 

類似的東西。 或者有沒有其他方法可以做到這一點。

在此處輸入圖像描述

對於這些值,在不知道中間節點名稱的情況下,請使用以下代碼行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String friedChicken = ds.getKey();
            String foodType = ds.child("food_TYPE").getValue(String.class);
            Log.d("TAG", friedChicken + "/" + foodType);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

logcat 中的 output 將是:

Fried Chicken / Non-Veg

同我得到food_TYPE的值一樣,你也可以得到其他的。

您可以執行以下操作

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child(uid).child("Fried Chicken");
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        String foodType = dataSnapshot.child("food_TYPE").getValue().toString();
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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