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