web-dev-qa-db-ja.com

Cloud Firestoreコレクションのクエリが機能しない

Cloud Firestoreは新しいため、使用に問題があります。

すべてのusersCollectionを取得してトラバースする必要があります。しかし、それは機能していません。

db.collection("users").get().then(function(querySnapshot){
      console.log(querySnapshot.data());
});

それは言う:

querySnapshot.dataは関数ではありません

そして次のコード:

callFireBase(mobileToCheck){
        db.collection("users").where("mobile_no", '==', mobileToCheck).get().then(function(querySnapshot){
            if (querySnapshot.exists) {
                var userData = querySnapshot.data();
                var userId = querySnapshot.id;
                console.log(mobileToCheck + "Exist In DB");
            }else{
                console.log(mobileToCheck + "Do Not Exist In DB");
            }
        });
}

常に印刷しています

923052273575 DBに存在しない

存在する場合でも、以下の画像を参照してください。

enter image description here

9
Noman Ali

QuerySnapshotにはdataがありませんが、データがあるdocsがあるので、混乱していると思います。

最初の例では、コレクション内のすべてのドキュメントを返すように要求しています。代わりに、次のようなものが必要になります。

db.collection("users").get().then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        console.log(doc.id, " => ", doc.data());
    });
});

主な違いは、querySnapshotのドキュメントと、各ドキュメントのデータを記録するコンソールです。

2番目の例では、querySnapshotが存在するかどうかを確認するのではなく、空かどうかを確認します。

db.collection("users").where("mobile_no", "==", mobileToCheck)
.get()
.then(function(querySnapshot) {
    if (querySnapshot.exists) {
        querySnapshot.forEach(function(doc) {
            console.log(doc.id, " => ", doc.data());
            var userData = doc.data()
            var userId = doc.id
            console.log(mobileToCheck + "Exist In DB");
        });
    } else {
        console.log(mobileToCheck + "Do Not Exist In DB");
    };
})
.catch(function(error) {
    console.log("Error getting documents: ", error);
});
9
Dan McGrath