【问题标题】:Why are non auto-generated document Ids are in italics in Firestore console?为什么非自动生成的文档 ID 在 Firestore 控制台中以斜体显示?
【发布时间】:2021-06-21 19:33:56
【问题描述】:

当我使用自己的文档 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

截图 2 截图 3

我的查询对 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());
    });
});

【问题讨论】:

  • 我不知道真正的原因,但据我所知,这与自动生成的 ID 无关。我刚刚添加了一个带有自键入 ID 的文档,它显示为非斜体,与列表中的所有其他(自动生成的)ID 相同。
  • 请注意,您在这里混合了两个单独的问题: 1. 为什么某些文档 ID 在控制台中显示为斜体? 2. 为什么我的代码没有返回任何文件?我建议将每个问题作为一个单独的问题发布,因为答案可能彼此无关。
  • 对于问题2:您是否有权阅读/billing?最简单的检测方法是添加.catch((function(error) { console.error(error); })
  • 没人知道问题是什么?
  • 对于问题 1stackoverflow.com/a/48138953/2162226 - 谢谢@Frank

标签: firebase google-cloud-firestore firebase-console


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    问题,我后来从这个问题的answer 中发现,我正在为一个空文档创建一个子集合。这是我的代码导致文档变灰。

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-16
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 2018-08-27
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多