【问题标题】:How to read Firebase document with auto generated document id using Javascript如何使用 Javascript 读取具有自动生成的文档 ID 的 Firebase 文档
【发布时间】:2020-05-29 15:32:03
【问题描述】:

我正在尝试使用填充了文档 ID 的变量从 Firebase 集合中读取单个文档。文档 id 正确且文档存在于集合中。 当我使用变量启动代码时,似乎读取成功,但我感兴趣的字段中没有数据。(参见下面的代码)。

db.collection("Pswref").doc(clpdocid).get().then((docRef) => { 
            const SingleRecord = docRef.data();
            console.log('yyyyyy - Great document found using fixed id for doc id ', docRef.data());
            console.log('yyyyyy - Title from database = >', SingleRecord.title);
            console.log('yyyyyy - Doc id ', clpdocid);
        })
        .catch((error) => { 
            console.error('yyyyyy - Error getting document ', error);
        });

但是,当我在 get 语句中对文档 ID 进行硬编码时,一切正常,我可以访问所需的信息。 (见下面的代码)。

db.collection("Pswref").doc("NoA6EBijcgsBIIOZCsWC").get().then((docRef) => { 
            const SingleRecord = docRef.data();
            console.log('xxxxxx - Great document found using fixed id for doc id ',docRef.data());
            console.log('xxxxxx - Title from database = >', SingleRecord.title);
        })
        .catch((error) => { 
            console.error('xxxxxx - Error getting document ', error);
        });

图像显示了根据脚本的 console.log 输出。 注意:您会注意到,上述查询与所使用的 doc id 引用完全相同,并且根据通过控制台生成的输出,我得到了不同的结果。

有人可以帮助我了解为什么会发生这种情况以及解决方案可能是什么吗?

我已对给出错误的行进行了注释并重新运行,以便控制台中的输出可以显示 ‍‍clpdocid 实际上已正确填充。(请参阅下面的片段),然后在新图像上输出。

        db.collection("Pswref").doc(clpdocid).get().then((docRef) => { 
            const SingleRecord = docRef.data();
            console.log('yyyyyy - Great document found using fixed id for doc id ', docRef.data());
            //console.log('yyyyyy - Title from database = >', SingleRecord.title);
            console.log('yyyyyy - Doc id ', clpdocid);
        })
        .catch((error) => { 
            console.error('yyyyyy - Error getting document ', error);
        });

【问题讨论】:

    标签: javascript google-cloud-firestore


    【解决方案1】:

    clpdocid 确实不包含您期望的值。您从docRer.data() 打印的undefined 证明您请求了一个不存在的文档,因为data() 的API 文档说如果找不到该文档则期望未定义。

    尝试在查询之前记录 clpdocid 的值,以确保您拥有所需的文档 ID。

    【讨论】:

    • 感谢 Doug 的回复。 clpdocid 实际上是用文档 ID 填充的。它没有出现的原因是因为上一行因 TypeError 而失败。我已经注释掉了这条线,现在您可以看到 clpdocid 已正确填充。 (我会尝试再次添加图像。
    • 再一次。谢谢道格。你完全正确。您的评论让我询问该字符串,发现它在末尾包含一个空格,这使其成为无效的文档 ID。字段 clpdocid 通过 document.querySelector('#page') 从网页传递,效果很好。然而不知何故在最后增加了空间。我使用 trim() 删除了空间并再次测试。一切都很好,谢谢。你对我帮助很大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2021-08-12
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多