为什么Firestore控制台中的非自动生成文档ID是斜体?

2024-10-02 02:43:31 发布

您现在位置:Python中文网/ 问答频道 /正文

当我添加一个具有我自己的文档Id(不是自动生成的)的文档时,文档Id节点以斜体显示,如Firestore控制台的屏幕截图所示。这背后的原因是什么

我添加数据的代码是

const billingRef = db .collection('billing/test/2017/months/11') .doc(); billingRef .set({ name: 'ABC' }) .then(_ => { console.log('saved'); }) .catch(err => { console.log(err); });

上面的代码成功地添加了一个节点,但添加了斜体的节点“test”和“months”

截图1 enter image description here

截图2 enter image description here 截图3 enter image description here

我的查询为firestore中的此类记录生成零结果,代码如下。如何查询计费下的所有节点

db.collection("billing").get().then(function(querySnapshot) { console.log(querySnapshot.size) // this is always 0 querySnapshot.forEach(function(doc) { console.log(doc.id, " => ", doc.data()); }); });

Tags: 代码文档testlogiddbdoc节点
2条回答

根据我上面的评论,您将在Firestore控制台中看到,对于斜体的文档,有一个小文本说“此文档不存在,它不会出现在查询或快照中”,因为非斜体的,它说“此文档没有数据”,因此直觉是,当文档在没有任何字段的代码中创建时,它是“null”(子集合不计算在内)。如果添加和删除了一个字段,那么文档就是空的,而不是空的

由于您对账单项下单据的查询是斜体的(“null”或不存在),如上所述,它们不会出现在查询中

解决方案可能是通过Firestore控制台添加文档,因为此处的文档创建为空,或者如果在代码中,添加一个字段,如果不需要,可以再次删除该字段,然后文档将显示在查询中

问题是,我后来从这个问题的answer中发现,对我来说,创建一个子集合到一个空文档。这是我的代码,用于显示灰显文档

       db.collection('temporal')
            .doc('documentexample')
            .collection("files")
            .add({
              name: "Lorem"
            })
            .catch((error) => {
              console.error("Error adding file: ", error);
            });

在上面的代码中,docdocumentexample没有字段。因此,代码继续创建documentexample(它没有字段),然后在其中创建一个子集合files。根据firebase的说法,这只是使第一个文档documentexample变灰

解决方法是首先创建文档并在其中添加一个字段,然后创建一个子集合,然后继续。。。对于我的用例,我创建了一个函数来创建文档,并在用户第一次注册时向文档中添加一个字段

相关问题 更多 >

    热门问题