Cloud Firestore 集合查询不起作用

Cloud Firestore collections queries not working

由于 Cloud Firestore 是新的,我在使用它时遇到了问题。

我必须获取所有 usersCollection 并遍历它。但它不起作用。

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

它说:

querySnapshot.data is not a function

以及以下代码:

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 Do Not Exist In DB

即使存在,参考下图。

我认为您对一些事情感到困惑,因为 querySnapshot 没有 data,但它确实有 docs,其中有数据。

在您的第一个示例中,您要求它 return 集合中的所有文档。你会想要这样的东西:

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

主要区别在于遍历 querySnapshot 中的文档和控制台记录来自每个文档的数据。

对于第二个示例,您需要检查 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);
});