特定のFirestoreパスが与えられた場合、そのレコードが存在するかどうかを確認する最も簡単でエレガントな方法は、観察可能なドキュメントを作成してサブスクライブすることですか?
この質問 を見てみると、.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);
});
これをチェックして :)
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 )
});
私は最近、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()は、クエリに対するドキュメントが見つかったかどうかを解決するソリューションを提供します