# #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. у меня нет удостоверения личности