Как я могу запросить имя документа в FireStore? - PullRequest
0 голосов
/ 26 мая 2020

Посмотрите, я создал метод входа в Google, и после этого настройка, которая должна отображаться только в первый раз при входе в систему на этом экране, он вводит некоторую информацию о себе, которая будет загружена в документ в firestore. Этот документ firestore будет иметь тот же UID, что и пользователь, входящий в систему Google. Чтобы выяснить, есть ли у пользователя уже учетная запись с некоторой предоставленной информацией, я хочу сделать запрос, существует ли уже документ с указанным c uid в качестве имени документа.

FirebaseUser user = mAuth.getCurrentUser();
FirebaseFirestore db;

String currentID = mAuth.getCurrentUser().getUid();

// Checken ob User schon Dokument hat
db = FirebaseFirestore.getInstance();
db.collection("users")
         .whereEqualTo("uid", currentID)
         .get()
         .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { // Add the listener callback

@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
    if(task.isSuccessful()) {
        // Check the size of the result to see if any matches were found
        if(task.getResult().size() == 0) {
            // No document exists containing the searched value
        } else {
            // A document already exists containing the searched value
            hasDocument = true;
        }
    } else {
        Log.e(TAG, "There was an error querying the documents.", task.getException());
    }
}
});

if(hasDocument) {
     SendUserToMainActivity();
} else {
     SendUserToSetupActivity();
     Toast.makeText(LoginActivity.this, "You must provide some information first", Toast.LENGTH_LONG).show();
 }

I думаю, моя проблема в том, что я запрашиваю поле, и я не знаю, как запросить имя документа вместо самого поля. Как это сделать?

This is how it looks

Так структурированы документы:

1 Ответ

2 голосов
/ 26 мая 2020

Используйте следующий код, чтобы проверить, есть ли у пользователя документ или нет

FirebaseUser user = mAuth.getCurrentUser();
FirebaseFirestore db;
String currentID = mAuth.getCurrentUser().getUid();
//Checken ob User schon Dokument hat
db = FirebaseFirestore.getInstance();
db.collection("users")
        .document(currentID)
        .get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if (document.exists()) {
                        Log.d(TAG, "Document exists!");
                    } else {
                        Log.d(TAG, "Document does not exist!");
                    }
                } else {
                    Log.d(TAG, "Failed with: ", task.getException());
                }
            }
        });
...