如何使用Javascript读取具有自动生成的文档ID的Firebase文档

时间:2020-05-29 05:36:23

标签: javascript google-cloud-firestore

我正在尝试使用填充有文档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输出。 注意:您会注意到上述查询与接受的文档ID引用完全相同,并且根据通过控制台生成的输出,我得到的结果也有所不同。

enter image description here

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

我已在给出错误的行中进行了注释,然后重新运行,以便控制台中的输出可以显示‍ 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);
        });

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

肯定是clpdocid实际上没有包含您期望的值的情况。您正在从undefined打印的docRer.data()证明您已请求不存在的文档,因为data()的API文档说如果文档是找不到。

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