11

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

我必须收集所有用户并遍历它。但它不起作用。

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 数据库中不存在

即使它存在,请参阅下图以供参考。

在此处输入图像描述

4

1 回答 1

13

我认为您有些困惑,因为 querySnapshot 没有data,但它确实有docs哪些数据。

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

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);
});
于 2017-10-07T03:20:06.580 回答