我目前正在创建一个适用于 Firestore 的 Android 应用程序,我想实现一个方法/类来检查在其中一个集合中是否存在具有给定路径的文档。
我试图通过尝试从一个文档中获取数据来做到这一点,然后如果该对象不存在,我想返回第二个路径的值,默认值是选中的路径的值。这就是问题所在,因为它是一个匿名类,所以我不能为该类之外的变量分配任何东西。 下面是我的 Firebase 数据库中的代码和预览屏幕。
public class UserValid
{
String typeOfAcc = "Podopieczni";
FirebaseFirestore fStore;
FirebaseAuth fAuth;
DocumentReference documentReference;
List itemList = new ArrayList<>();
String userID;
public UserValid()
{
Log.d("TAG", "Błąd, wybrano konstruktor bez argumentów");
}
//Metoda sprawdzająca jaki typ konta jest aktualnie obsługiwany
// Jeśli wartość true - konto podopiecznego, wartość false - konto trenera;
public UserValid(FirebaseAuth fAuth, FirebaseFirestore fStore)
{
userID = fAuth.getCurrentUser().getUid();
this.fAuth = fAuth;
this.fStore = fStore;
documentReference = fStore.collection("Podopieczni").document(userID);
readData(new FirestoreCallback()
{
@Override
public void onCallback(List<String> list)
{
if(itemList.get(0) == null)
{
typeOfAcc="Trenerzy";
Log.d("TAG", itemList.toString());
}
}
});
}
private void readData(FirestoreCallback firestoreCallback)
{
//DocumentReference docRef = db.collection("cities").document("SF");
documentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful())
{
//for(DocumentSnapshot document : task.getResult()) {
String itemName = task.getResult().getString("Imie");
itemList.add(itemName);
// }
firestoreCallback.onCallback(itemList);
}
}
});
}
private interface FirestoreCallback
{
void onCallback(List<String> list);
}
}