【问题标题】:Cloud Firestore collections queries not workingCloud Firestore 集合查询不起作用
【发布时间】:2018-03-18 08:16:45
【问题描述】:

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

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

【问题讨论】:

  • @Noman Ali 你得到这些查询的解决方案了吗

标签: javascript database firebase google-cloud-firestore


【解决方案1】:

我认为您有些困惑,因为 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);
});

【讨论】:

  • @Dan McGrath 我已经使用了上面的查询但是对我来说它总是说用户不存在。但数字在数据库中。有什么问题
猜你喜欢
  • 1970-01-01
  • 2020-05-06
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 2018-07-17
  • 1970-01-01
  • 2019-07-25
相关资源
最近更新 更多