Проверка наличия или отсутствия элемента коллекции Firestore

# #java #android #firebase #android-studio #google-cloud-firestore

Вопрос:

Я хочу проверить, существует ли введенный элемент текста (EditText) или нет, используя коллекцию Firestore, если существует, где существует, или извлеките оставшиеся элементы Примечание: у нас нет идентификатора документа

Я хочу, чтобы мобильный телефон, если наша коллекция пользователей, мобильный телефон существует, затем извлекал оставшиеся элементы, идентификатор документа будет случайным, используя АвтоИД и игнорировал дополнительные коллекции, такие как Запросы на вывод средств

Подробные сведения
Подробные сведения

Я пишу этот код в своей деятельности

 private void fetchDatafromFirestoreCollection() {

    firestore.collection("Users").addSnapshotListener(new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
            if (error != null) {
                if (dialog.isShowing())
                    dialog.dismiss();

                Log.e(TAG, "Error is: ", error);
                return;

            }
            for (DocumentChange documentChange : value.getDocumentChanges())
        }
    });

}
 

Комментарии:

1. Пожалуйста, прочтите Описание, чтобы понять, что я пытаюсь сказать

2. Я не уверен, что понимаю. Каковы точные данные, которые вы хотите проверить на наличие?

3. Вопрос кажется неясным. Можете ли вы подробно описать вопрос и четко сформулировать, чего вы хотите достичь?

4. @AlexMamo Я хочу проверить, что коллекция пользователей является реффералом «ABC123» существует, если существует, кто является пользователем, тогда я получаю мобильный или другие данные

5. Я хочу собрать все документы, чтобы проверить, существует ли ABC123 или нет, чтобы дать ему определенную сумму

Ответ №1:

Согласно этому комментарию:

Я хочу проверить, что в коллекции пользователей есть реферкод «ABC123», если существует, кто является пользователем, то я получаю мобильный или другие данные

И этот комментарий:

Я хочу собрать все документы, чтобы проверить, существует ли ABC123 или нет, чтобы дать ему определенную сумму.

Чтобы решить эту проблему, вы должны использовать запрос, который выглядит следующим образом:

 FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference usersRef = db.collection("Users");
usersRef.whereEqualTo("ReferCode", "ABC123").get()
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    String mobile = document.getString("Mobile");
                    Log.d("TAG", mobile);

                    //Do what you need to do with the phone number
                }
            } else {
                Log.d(TAG, "Error getting documents: ", task.getException());
            }
        }
    });
 

Результатом в logcat будет:

 9876543210
 

Комментарии:

1. как вы отвечаете на мой комментарий, так это то, что любая встроенная функция Stackoverflow вручную копирует и вставляет текст

2. Я использовал > только перед вашими комментариями, которые были добавлены в качестве копирования/вставки.

3. что я буду делать, когда кто-то введет неправильный ReferCode код, которого не было в базе данных, потому что я пытался addOnFailureLister , но он не был выполнен при вводе неправильного кода. ? ? ?

4. Нет, OnFailure будет вызван только в том случае, если серверы Firebase отклонят запрос. Это не сработает, если документы не будут возвращены

5. итак, что я использовал, чтобы проверить, не будут ли возвращены никакие документы, я хочу установить ошибку в редактировании текста с помощью binding.referEd.setError("Wrong refer code")

Ответ №2:

Сделайте структуру документа такой, как эта:

     DocumentReference docRef = db.collection("Users").document("123456789");
                docRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
                    @Override
                    public void onEvent(DocumentSnapshot snap, FirestoreException fe) {
                        if (snap.exists()) {
                            //exists
                        for (DocumentChange dc : snap.getDocumentChanges()) {
                            //Store exist information to your Object model.
                            UserInfo userinfo = dc.getDocument().toObject(UserInfo.class);
                         Log.e(TAG, "userinfo: " userinfo.getCompany);
                        }
                        } else {
                            //not exists
                        }
                    }
    
                });
 

Надеюсь, это сработает..

Комментарии:

1. у меня нет удостоверения личности