Какой лучший способ проверить, существует ли запись Firestore, если ее путь известен?

Учитывая заданный путь Firestore, самый простой и элегантный способ проверить, существует ли эта запись или не создать документ, который можно наблюдать и подписываться на него?

Ответ 1

Если взглянуть на , этот вопрос выглядит так, что .exists все еще можно использовать так же, как со стандартной базой данных Firebase. Кроме того, вы можете найти еще несколько людей, которые обсуждают эту проблему на github здесь

документация гласит

НОВЫЙ ПРИМЕР

var docRef = db.collection("cities").doc("SF");

docRef.get().then(function(doc) {
    if (doc.exists) {
        console.log("Document data:", doc.data());
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
}).catch(function(error) {
    console.log("Error getting document:", error);
});

СТАРЫЙ ПРИМЕР

var cityRef = db.collection('cities').doc('SF');

var getDoc = cityRef.get()
    .then(doc => {
        if (!doc.exists) {
            console.log('No such document!');
        } else {
            console.log('Document data:', doc.data());
        }
    })
    .catch(err => {
        console.log('Error getting document', err);
    });

Ответ 2

Проверьте это:)

  var doc = firestore.collection('some_collection').doc('some_doc');
  doc.get().then((docData) => {
    if (docData.exists) {
      // document exists (online/offline)
    } else {
      // document does not exist (only on online)
    }
  }).catch((fail) => {
    // Either
    // 1. failed to read due to some reason such as permission denied ( online )
    // 2. failed because document does not exists on local storage ( offline )
  });

Ответ 3

Недавно я столкнулся с той же проблемой при использовании Firebase Firestore и использовал следующий подход для ее преодоления.

mDb.collection("Users").document(mAuth.getUid()).collection("tasks").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                if (task.getResult().isEmpty()){
                    Log.d("Test","Empty Data");
                }else{
                 //Documents Found . add your Business logic here
                }
            }
        }
    });

task.getResult(). isEmpty() предоставляет решение, которое, если документы по нашему запросу были найдены или нет