Javascript 如何使用reactJS仅获取Firebase/Firestore中的文档列表

Javascript 如何使用reactJS仅获取Firebase/Firestore中的文档列表,javascript,reactjs,firebase,google-cloud-firestore,Javascript,Reactjs,Firebase,Google Cloud Firestore,我想问一些问题,我需要从firebase获取数据,但只需要文档列表 我已经试过了,但我(此刻)陷入了困境,以下是我的代码: this.ref3 = firebase .firestore() .collection("pendatang") .orderBy("timestamp", "desc") .limit(10); componentDidMount = async () => { this.unsubscribe = t

我想问一些问题,我需要从firebase获取数据,但只需要文档列表

我已经试过了,但我(此刻)陷入了困境,以下是我的代码:

this.ref3 = firebase
      .firestore()
      .collection("pendatang")
      .orderBy("timestamp", "desc")
      .limit(10);

componentDidMount = async () => {
    this.unsubscribe = this.ref3.onSnapshot(this.onCollectionUpdate2);
  };

onCollectionUpdate2 = (querySnapshot) => {
    const tanggal = [];
    querySnapshot.forEach((doc) => {
      tanggal.push({
        tanggal: doc.id,
        doc, // DocumentSnapshot
      });
    });
    this.setState(
      {
        tanggal,
      },
      () => {
        console.log(this.state.tanggal);
      }
    );
  };
事实上,我没有得到错误,我得到了数组,但它好像没有得到任何,当我使用
map
时,它在状态中没有出现任何东西,这是我在获取后得到的

我尝试了
map
it:

{this.state.tanggal.map((item, key) => (
                        <Chip
                          avatar={<Avatar>M</Avatar>}
                          label={item.tanggal}
                          onClick={() => this.ChipsClicked(24)}
                        />
                      ))}
{this.state.tanggal.map((项,键)=>(

如Firebase控制台屏幕截图所示,该文档在Firebase控制台中以斜体显示:这是因为该文档(在控制台中)仅作为一个或多个子集合的“容器”显示,而不是“正版”文档

如果使用完整路径
doc1/subCol1/subDoc1
直接在
col1
集合下创建
subDoc1
文档,则不会创建任何中间文档(即没有
doc1
文档)

Firebase控制台以斜体显示此类“容器”(或“占位符”),以便“具体化”层次结构,并允许您导航到
subDoc1
文档,但
doc1
文档在Firestore数据库中不存在


因此,如果我们在
col1
集合下有一个
doc1
文档

col1/doc1/
col1/doc1/subCol1/subDoc1
以及
subCol1
(sub-)集合下的另一个
subDoc1

col1/doc1/
col1/doc1/subCol1/subDoc1
…事实上,从技术角度来看,它们之间根本没有联系。它们只是分享了它们的一部分道路,而没有其他东西

您可以很好地创建
subDoc1
,而无需创建
doc1

另一个副作用是,如果删除文档,其子集合仍然存在。同样,子集合文档并未真正链接到父文档


因此,在您的情况下,如果您需要在
pendatang
集合中拥有正版文档,则需要在创建第一个子集合文档的同时创建它们


另外,请注意,Cloud Firestore有浅显的内容:查询集合中的文档不会从子集合中提取数据。

嘿,非常感谢!如果我错了你的答案,我很抱歉,但你的意思是我需要更改集合的结构吗?我不知道你是否需要更改数据模型,这是一个非常广泛的任务这取决于您没有共享的几个标准。这主要取决于您在查询方面的要求。我的回答的目的是提请您注意,如果您没有专门创建
pendatang
集合下的文档,则它们不存在。非常感谢,希望我没有误解我试着理解你的答案,我会尝试其他方法,事实上我做的如上是为了能够分组,因为(据我所知)firebase中不能使用grupby()函数。别忘了Cloud Firestore有浅读:查询集合中的文档不会从子集合中提取数据。