如何检查 FirebaseFirestore 中是否存在文档

时间:2021-01-04 10:46:15

标签: java android firebase android-studio kotlin

我目前正在创建一个适用于 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);
    }
}

0 个答案:

没有答案