Проверка наличия документа в коллекции Firestore - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть дерево коллекции Firestore, в котором я планирую хранить только один документ. Я хочу проверить, содержит ли эта коллекция этот документ, и если да, получить идентификатор документа! Есть идеи / мысли?

Спасибо:)

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Создайте структуру документа следующим образом:

collectionName (Collection) -> documentId (Document) -> id = documentId (и другие поля)

Теперь сделайте запрос:

FirebaseFirestore firestoreDatabase= FirebaseFirestore.getInstance();
firestoreDatabase.collection(COLLECTION_NAME)
            .whereEqualTo(DOCUMENT_ID, documentId)
            .get()
            .addOnCompleteListener(task -> {
                if (task.isSuccessful()) {
                    if (task.getResult().getDocuments().size() > 0)
                        // Here is your document with id
                }
            });
0 голосов
/ 16 ноября 2018

Если вы хотите проверить существование определенного документа на основе его document id, используйте следующие строки кода:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
DocumentReference docIdRef = rootRef.collection("yourCollection").document(docId);
docIdRef.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());
        }
    }
});

Если у вас нет идентификатора документа, вам необходимоиспользуйте запрос и найдите этот документ в соответствии со значением определенного свойства, например:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference yourCollRef = rootRef.collection("yourCollection");
Query query = yourCollRef.whereEqualTo("yourPropery", "yourValue");
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                Log.d(TAG, document.getId() + " => " + document.getData());
            }
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});
0 голосов
/ 16 ноября 2018

Попробуйте это.

FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.collection("users").whereEqualTo("user_uid", user.getUid())
    .limit(1).get()
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<QuerySnapshot> task) {
                          if (task.isSuccessful()) {
                            boolean isEmpty = task.getResult().isEmpty();
                          }
                        }
                    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...