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

Expo React Native中Firestore地理查询仅返回单条结果求助

解决Firestore地理查询仅显示单个结果的问题

问题根源

你代码里的循环中每次调用setReada(workingX)都会直接覆盖之前的状态值,所以最终只会保留最后一条文档的name,看起来像是查询只返回了一个结果。实际上查询大概率返回了多条符合条件的文档,但状态被反复覆盖导致只显示最后一条。

修复代码

调整逻辑,先收集所有结果再一次性更新状态:

const retrieveNetwork2 = async () => {
  const query = geocollection.near({
    center: new firebase.firestore.GeoPoint(15.5, -90.25),
    radius: 1000,
  });

  const querySnapshot = await query.get();
  // 把所有文档的name字段收集到数组里
  const allNames = querySnapshot.docs.map(doc => doc.data().name);
  // 一次性更新状态,避免覆盖
  setReada(allNames);
};

补充说明

删除文档后出现另一个结果,是因为删除前循环最后一次覆盖的是被删文档的name,删除后循环最后一条变成了下一个文档的name——本质还是状态被连续覆盖的问题,并非查询本身没有返回多条数据。如果你的setReada原本是存储单个值的状态,需要把状态结构改成数组类型,才能展示所有结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:50:29