You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+Firebase:如何用Where子句获取指定文档并展示数据?

问题原因与解决方案

你的问题出在data1是数组类型的状态,但你直接尝试访问data1.name——数组本身没有name属性,自然拿不到数据。

解决方法分两种场景:

场景1:确定只有1个符合条件的文档(name字段唯一)

直接取数组的第一个元素,同时用可选链操作符?.避免初始加载时数组为空导致的报错:

<span className="printdata">{data1[0]?.name}</span>

如果要显示完整文档的所有内容,可以这样写:

{data1[0] && (
  <div className="printdata">
    <p>ID: {data1[0].id}</p>
    <p>Name: {data1[0].name}</p>
    {/* 其他字段同理 */}
  </div>
)}

场景2:可能有多个符合条件的文档

用map遍历数组,逐个渲染每个文档的内容:

<div className="printdata-list">
  {data1.map((item) => (
    <div key={item.id} className="printdata">
      <p>ID: {item.id}</p>
      <p>Name: {item.name}</p>
      {/* 其他字段按需添加 */}
    </div>
  ))}
</div>

额外说明

你的数据获取逻辑是没问题的,querySnapshot.forEach已经把符合条件的文档都存入了数组,只是渲染时没有正确访问数组内的元素。初始状态设为[]是合理的,因为Firebase查询返回的是多个文档的集合(即使只有1个结果)。

内容的提问来源于stack exchange,提问作者qscx530

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:36:10