当前位置: 首页 > 知识库问答 >
问题:

Firestore无法获取空文档

易星宇
2023-03-14

我有一个文档集合,其中文档的id是用户id。让我们称这些为用户文档。

每个“用户文档”包含聊天消息的子集合。但并不是所有的“用户文档”都包含任何字段(数据,而不是子集合)。

我不想返回集合中没有任何字段但有子集合的所有文档,但我觉得这是不可能的?

var allUserDocs = {}, 
    count = 0,
    users = firestore.collection("users");

users.get().then(snapshot => {
    snapshot.forEach(doc => {           
        count++;
        allUserDocs[count] = doc.data();            
    });

    allUserDocs.count = count;
    res.status(200).send(allUserDocs);          
})

此代码只返回包含字段的文档,而不是只有子集合的文档?有没有办法全部返回?

如何获取集合中所有文档id的列表?空的和非空的都有?或者,如果我不能访问没有字段的文档,我如何向所有没有字段的文档添加字段?

共有2个答案

阳兴文
2023-03-14

使用文档id

users.get().then(snapshot => {
    snapshot.forEach(doc => {           
        count++;
        allUserDocs[doc.id] = doc.data();            
    });

    allUserDocs.count = count;
    res.status(200).send(allUserDocs);          
})
韩捷
2023-03-14

有一个listDocuments方法可以检索所有包含子集合的文档,无论是否缺失。文档中有一页解释了这一点。

类似这样的东西可能是您要查找的内容:

let collectionRef = firestore.collection('col');

return collectionRef.listDocuments().then(documentRefs => {
   return firestore.getAll(...documentRefs);
}).then(documentSnapshots => {
   for (let documentSnapshot of documentSnapshots) {
      if (documentSnapshot.exists) {
        console.log(`Found document with data: ${documentSnapshot.id}`);
      } else {
        console.log(`Found missing document: ${documentSnapshot.id}`);
      }
   }
});
 类似资料:
  • 问题内容: 我的目录设置如下: 我的主文件是这样的: 我的应用程序是这样的: 问题是当我运行应用程序时,无法加载CSS文件。 问题答案: 由于.css文件是静态文件,因此您必须将它们提供给客户端。但是,您不能将静态文件用作快速中间件。将以下中间件添加到您的express应用中,然后将文件夹移动到目录下(您应该创建一个) 因此您的最终目录结构应如下所示 并且不要忘记需要模块

  • 我有一个名为“posts”的Firebase Firestore集合,其结构如下: 我可以查询所有类别为“general”的博客文章,如:然而,我似乎无法找到一种方法来获取“类别”映射为空的所有文档。 我想查询“帖子”集合中的所有文档,其中有。我尝试了,但没有成功。我将如何获取这些数据?

  • 我们使用nextjs/reactjs作为FE,并且我们有一个server.js文件,它允许我们在上传映像,但是由于某种原因,每当我们运行服务器时,都会出现错误 下面是我们在server.js上的代码 这些是我们package.json中包含的脚本 希望得到一些答案和建议。这些代码在本地运行,没有任何问题

  • 如果我有一个Firebase Firestore数据库,我已为右侧集合对应的文档检索到文档快照,并存储在文档变量中,那么我如何在“用户名”字段检索该文档快照中的值?该字段具有字符串值。

  • 在我们仔细处理之后。我仍然无法获取自动生成的文档ID。没有“then”选项。我的代码: 创建后如何获取ID?