【问题标题】:Firebase query won't return all documentsFirebase 查询不会返回所有文档
【发布时间】:2020-03-04 02:01:05
【问题描述】:

我正在尝试返回特定集合中的所有文档 ID。我正在用 Javascript 为 Web 应用程序编写这个。 我做了这个函数,并在需要的地方调用它。

function getUserList() {
    var rootRef = firebase.database().ref();
        var db = firebase.firestore();
        //var docRef = db.collection("Users");//.doc(getUserID()).collection("userControl").doc("UserStatus") //EXAMPLE: /Users/UUID/userControl/UserStatus

        db.collection('Users')
        .get().then(function(querySnapshot) {
            size = querySnapshot.size // will return the collection size
            console.log(size);
            querySnapshot.forEach(function(doc) {
               console.log(doc.id);

            });
        });
}

但是,当我检查控制台日志中的数据时,我只看到了 8 个文档中的 6 个。总共有8个文档,但是doc.id的count和log只显示了6个。可以在截图中看到(由于原因,一个ID被屏蔽了)。

如果我指定缺少的文档之一.get.collection('Users').doc('UUID HERE')...,它会毫无问题地读取该文档。

这些文档中的大多数都是从 IOS 应用程序上传的,除了我的(模糊的)UID 模板。如果我手动编辑文档,即添加一个额外的字段等,文档会出现在搜索中,但对于直接来自 IOS 应用程序的文档,除非指定,否则它们不会出现。

我不确定如何解决这个问题,或者为什么会出现这个问题。

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    您看到的以斜体列出的文档(“AB47...”和“DCBC...”)实际上并不是集合中存在的文档。斜体表示在该文档 ID 下组织的其他文档的子集合。没有查询会匹配这些文档,因为它们不存在。您可能已经删除了它们,但没有删除它们所有子集合中的所有文档。但它们在控制台中仍然可见,因为您可能想要导航到它们的子集合。

    【讨论】:

    • 谢谢。这就说得通了。为了解决这个问题/使它工作,我也必须单独编写文档“AB47 ...”,而不仅仅是在写数据时使用collection("Users").document(userID).collection("collectionName").document(Doc'name')
    • 是的,如果您编写的子集合组织在一个不存在的文档 ID 下,如果您希望它出现在查询中,您仍然需要手动创建该文档。
    猜你喜欢
    • 1970-01-01
    • 2014-07-10
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多