который работает в базе данных в реальном времени.

ужна помощь с запросами Firestore. у меня естьall_users сбор данных, идентификационные документы пользователя с информацией каждого пользователя.образ базы данных камина Я хочу проверить, если имя пользователя уже существует. я получаю, как получить () документы и сравнить, как показано на их веб-странице, но как насчет запроса данных?, это мой код

обновление виджетов - (если текстовое поле mUser и текущее имя пользователя не совпадают)

 private void saveProfileSettings(){
    final String username = mUsername.getText().toString();
    //Case 1: user did not change their username
    if (!mUsers.getUsername().equals(username)){

        checkingIfusernameExist(username);

    }else {

    }
}

проверяющий метод имя_физера

    private void checkingIfusernameExist(final String username){
    Log.d(TAG, "checkingIfusernameExist: Checking if " + username + " Exists");

    Query mQuery = mFirebaseFirestore.collection("all_users")
            .orderBy(getString(R.string.fields_username))
            .whereEqualTo("username", username);

    mQuery.addSnapshotListener(new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {

            if (documentSnapshots != null){
                Log.d(TAG, "onEvent: username does not exists");
                Toast.makeText(getActivity(), "Username is available", Toast.LENGTH_SHORT).show();
            }
            for (DocumentSnapshot ds: documentSnapshots){
                if (ds.exists()){
                    Log.d(TAG, "checkingIfusernameExist: FOUND A MATCH: " + ds.toObject(Users.class).getUsername());
                    Toast.makeText(getActivity(), "That username already exists.", Toast.LENGTH_SHORT).show();
                }
            }
        }
    });
 }

Я не получаю ни ошибок, ни результатов. Я искал везде, и я не видел проблемы, как мои. Плюс, вокруг меня не так много вопросов, с которыми я могу работать. Любое исправление будет оценено, спасибо заранее.

ОБНОВЛЕНИЕ: после нескольких дней поиска я действительно нашел решение с помощью ответов, которые я получил ниже. поэтому, поскольку у firestore нет операционной логики, и вы хотите обновить, если имя пользователя не существует с .whereEqualTo, используйте задачу, чтобы найти, содержит какую-либо полезную нагрузку.

код, который работал для меня

проверяя методIfUsernameExists

private void checkingIfusernameExist(final String usernameToCompare){

    //----------------------------------------------------------------
    final Query mQuery = mFirebaseFirestore.collection("all_users").whereEqualTo("username", usernameToCompare);
    mQuery.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            Log.d(TAG, "checkingIfusernameExist: checking if username exists");

            if (task.isSuccessful()){
                for (DocumentSnapshot ds: task.getResult()){
                    String userNames = ds.getString("username");
                        if (userNames.equals(usernameToCompare)) {
                            Log.d(TAG, "checkingIfusernameExist: FOUND A MATCH -username already exists");
                            Toast.makeText(getActivity(), "username already exists", Toast.LENGTH_SHORT).show();
                        }
                }
            }
            //checking if task contains any payload. if no, then update
            if (task.getResult().size() == 0){
                try{

                Log.d(TAG, "onComplete: MATCH NOT FOUND - username is available");
                Toast.makeText(getActivity(), "username changed", Toast.LENGTH_SHORT).show();
                //Updating new username............


                }catch (NullPointerException e){
                    Log.e(TAG, "NullPointerException: " + e.getMessage() );
                }
            }
        }
    });

Ответы на вопрос(3)

Ваш ответ на вопрос