Cloud Firestore 集合查询不起作用

Posted

技术标签:

【中文标题】Cloud Firestore 集合查询不起作用【英文标题】:Cloud Firestore collections queries not working 【发布时间】: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 你得到这些查询的解决方案了吗 【参考方案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 我已经使用了上面的查询但是对我来说它总是说用户不存在。但数字在数据库中。有什么问题

以上是关于Cloud Firestore 集合查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Cloud Firestore 查询文档及其集合

如何在 Cloud Firestore 中使用文档 ID 执行集合组查询

无法在 Android 上使用 Cloud Firestore 保存文档

我可以使用 where equals 子句和 orderby 查询 Cloud Firestore 集合吗?

Cloud Firestore:如何在我的集合查询中获取文档引用并将其映射为 JSON 值?

从 Cloud Firestore 查询日期并运行两个单独的查询