我的查询是,我想在 Firebase 实时数据库中保存一些数据,以便我能够调用这些数据。请记住,即使用户重新安装应用程序,并且每个用户都会有一个特定的 child ,他们也应该能够调用数据。
我正在尝试制作一个应用程序,用户将在其中输入或保存数据到 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);
如果我们将路径重定向到那里,是否有任何方法或函数可以在不指定子路径名(如默认路径)的情况下检索数据
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 中的输出将是:
Fried Chicken / Non-Veg
和我获取food_TYPE
的值一样,你也可以获取其他的值。
关于java - Firebase 数据库和 Firebase Firestore 数据操作和检索数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61158614/