Cloud Firestore集合查询无法正常工作

Nom*_*Ali 9 javascript database firebase google-cloud-firestore

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

我必须得到所有用户的集合并遍历它.但它没有用.

db.collection("users").get().then(function(querySnapshot){
      console.log(querySnapshot.data());
});
Run Code Online (Sandbox Code Playgroud)

它说:

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");
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

总是打印

923052273575在DB中不存在

即使存在,请参阅以下图像以供参考.

在此输入图像描述

Dan*_*ath 9

我认为你有一些困惑,因为querySnapshot没有data,但它确实docs有数据.

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

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

关键区别在于循环文档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);
});
Run Code Online (Sandbox Code Playgroud)