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

是否有办法获取子集合(Firestore)中的所有文档

孟鹤龄
2023-03-14

我在我的FiRecovery数据库中查询子集合内的所有文档时遇到困难。(我使用的是Node.js)

我的目标是从名为favorites

我看了看留档https://firebase.google.com/docs/firestore/query-data/get-data但没有任何结果如何解决问题。

我现在的问题是这样的:

exports.getAllFavoritePodcasts = (req, res) => {
  db.collection('users')
    .doc(req.user.userId)
    .collection('favorites')
    .then(snapshot => {
      snapshot.forEach(doc => {
        console.log(doc.id, '=>', doc.data());
      });
    })
    .catch(err => {
      console.log('Error getting documents', err);
    });
}

但是我得到了TypeError:db。集合(…)。博士(…)。集合(…)。然后就不是一个函数了

共有2个答案

谷梁博易
2023-03-14

总之,必须调用get()方法来检索结果。在这个获取集合中所有文档的示例中,也可以在您提到的Cloud Firebase文章中找到它。

黄骏喆
2023-03-14

如果子集合(subcoll)包含3个文档(doc1、doc2、doc3),如下所示:

coll > doc > subcoll > doc1 > field1: "value1", field2: "value2"
                       doc2 > field1: "value1", field2: "value2"
                       doc3 > field1: "v1",     field2: "v2"

您可以使用以下代码获取子集合(subcoll)的所有3个文档(doc1、doc2、doc3):

import { getDocs, collection } from "firebase/firestore";

const docsSnap = await getDocs(collection(db,"coll/doc/subcoll"));
      
docsSnap.forEach((doc) => {
  console.log(doc.data()); // "doc1", "doc2" and "doc3"
});

不使用forEach()方法来获取以下子集合(subcoll)的所有3个文档(doc1、doc2、doc3):

import { getDocs, collection } from "firebase/firestore";

const docsSnap = await getDocs(collection(db, "coll/doc/subcoll"));
        
console.log(docsSnap.docs[0].data()); // "doc1"
console.log(docsSnap.docs[1].data()); // "doc2"
console.log(docsSnap.docs[2].data()); // "doc3"

此外,您可以通过以下方式获得子集合(subcoll)的2个文档(doc1、doc2):

import { query, collection, where, getDocs } from "firebase/firestore";

const q = query(collection(db, "coll/doc/subcoll"), 
                where("field1", "==", "value1"));
    
const docsSnap = await getDocs(q);

docsSnap.forEach((doc) => {
  console.log(doc.data()); // "doc1" and "doc2"
});

不使用foreach()方法获取子集合(subcoll)的2个文档(doc1、doc2),同时如下所示:

import { query, collection, where, getDocs } from "firebase/firestore";

const q = query(collection(db, "coll/doc/subcoll"),
                where("field1", "==", "value1"));
    
const docsSnap = await getDocs(q);
    
console.log(docsSnap.docs[0].data()); // "doc1"
console.log(docsSnap.docs[1].data()); // "doc2"

同样,此外,您只能使用以下代码获取子集合(subcoll)的一个特定文档(doc3):

import { getDoc, doc } from "firebase/firestore";

const docSnap = await getDoc(doc(db, "coll/doc/subcoll/doc3"));
          
console.log(docSnap.data()); // "doc3"
 类似资料:
  • 假设我有这种结构 其中和是集合,和是文档 有没有一种方法可以通过一个查询获得根文档中包含的所有内容<如果我这样问 我只得到字段。我想要的是B的所有文件 我基本上希望我的查询返回 是否可能或者我真的需要对每个集合进行多个查询:/? 假设我有一个代表用户配置文件的非常深的嵌套集合树,我的成本会像地狱一样上升,因为每次我加载用户配置文件时,我都有一个读取请求的乘数其中N是我的树的深度: /.

  • 我现在有一个firestore,看起来像这样: 我使用的是,我试图获取“报告”集合中的所有文档。 我可以得到一个报告: 但我无法得到整个子集合 这可能吗?我是新手,所以这可能是一个愚蠢的问题。 谢谢 编辑控制台中收到的错误消息是: 我不确定权限,我没有访问权限,但如果是权限问题,我很困惑,我可以从集合中获取一个文档,但找不到获取所有文档的方法

  • 我正在使用Java开发一个Android应用程序,我使用firestore数据库,我有一个名为用户位置的集合,其结构类似于照片: 分贝 我的问题是,当一个用户改变他的位置或一个新用户进入一个已经存在的位置(其他用户有相同的位置)时,它会创建一个新文档(如在“oran, algerie”中)。当我添加新用户并更新文档时,我想使用,但问题是我无法以正常方式检索根集合的所有文档: 它返回null。我尝试

  • 使用go和FireStore创建web应用程序。我遇到了一个奇怪的问题。如果使用NewDoc方法保存数据 我可以使用 现在,当我只想查找博客集合中的所有文档时,这是很棒的。但是我遇到了无法从blogs集合中查询特定blog的问题。我通过查看文档和保存类似的帖子来解决这个问题。 但是,由于我自己创建了docID,所以从整个集合中检索所有文档时使用

  • 我正在使用Firebase Firestore作为BaaS构建一个应用程序。 但当我尝试在我的应用程序上创建提要/实现全文搜索时,我面临一个问题。 我希望能够搜索所有用户的帖子,问题是,用户帖子在Firestore数据库中的结构如下: 帖子(收藏)- 我想遍历每个用户的用户帖子子集合并获取提要的所有数据,并使用Algolia或ES等全文搜索应用程序来实现它。 > 我可以遍历特定的用户ID(代码如下

  • 我试图设置一个聊天应用程序,在其中你可以搜索随机的用户交谈。现在,firestore中的数据库结构如下: 集合“users”-文档“userid”-集合“conversations”-文档“conversationid”-字段“partner”,“lastmessage” 其次,我有一个集合“conversations”,其中包含对话中的所有消息。 我现在尝试做的是,当你按下一个按钮时,应用程序将