如何在Google Firebase Firestore中仅获取条目标题而不下载全量数据
结论
Firestore 原生支持仅拉取文档的指定字段,无需全量拉取文档全部内容,你之前查阅的资料大概率存在信息滞后。
具体实现方法
你可以在查询时通过select()方法指定要返回的字段即可,以Web端JS SDK为例,拉取所有日志条目标题的代码参考如下:
import { collection, query, select, getDocs } from "firebase/firestore"; // 构建仅查询title字段的查询语句 const titleQuery = query(collection(db, "你的日志集合名"), select("title")); const queryResult = await getDocs(titleQuery); // 处理获得的标题列表,同时保留文档ID用于后续跳转查询完整内容 const logTitleList = queryResult.docs.map(doc => ({ logId: doc.id, title: doc.data().title }));
- 该查询仅会返回每个日志文档的
title字段以及文档ID,不会拉取文档内存储的正文等其他内容,数据传输量远低于全量拉取 - 计费按照查询返回的文档数量计算,和拉取同数量完整文档的计费标准一致,不会产生额外费用也不会有费用减免
可选优化方案
如果你的日志条目量级很大,想要进一步压缩目录加载的资源消耗,也可以采用拆分集合的方案:
- 单独创建一个仅存储日志目录信息的集合,例如命名为
log_catalog,集合内每个文档仅保留日志标题、创建时间、对应完整日志的文档ID这几个目录渲染必要的字段 - 目录页直接查询这个集合即可,单条数据体积极小,加载速度会更快
- 后续执行日志新增、编辑、删除操作时,同步更新两个集合的对应数据即可,逻辑实现非常简单,几乎没有额外的维护成本
内容的提问来源于stack exchange,提问作者user6322251
相关产品推荐
相关产品推荐

