web-dev-qa-db-ja.com

そのパスがわかっている場合、Firestoreレコードが存在するかどうかを確認する最良の方法は何ですか?

特定のFirestoreパスが与えられた場合、そのレコードが存在するかどうかを確認する最も簡単でエレガントな方法は、観察可能なドキュメントを作成してサブスクライブすることですか?

11
David Haddad

この質問 を見てみると、.existsは、標準のFirebaseデータベースと同じように使用できます。さらに、この問題についてgithubで話している人をもっと見つけることができます here

ドキュメント 状態

新しい例

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);
    });
19
DoesData

これをチェックして :)

  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 )
  });
2

私は最近、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()は、クエリに対するドキュメントが見つかったかどうかを解決するソリューションを提供します

0
Usman Iqbal