如何访问Firestore onSnapshot返回的snapshot对象中的特定内容?
Firestore Snapshot 路径访问正确方案
你之前访问的都是SDK内部私有属性,这类属性命名无规则、会随版本更新变动,本身就不对外提供调用,肯定不稳定。
Firebase SDK 对外暴露了公开的稳定API可以直接获取路径相关内容:
- 要获取路径分段数组,直接访问
snapshot.ref.path.segments即可,你需要的对应索引值直接从这个数组取就可以 - 常见路径相关需求还有更简洁的公开API:
- 获取当前文档ID:
snapshot.id - 获取当前文档完整路径字符串:
snapshot.ref.path - 获取当前文档所属父集合引用:
snapshot.ref.parent
- 获取当前文档ID:
- 如果你要读取文档内存储的业务数据,调用
snapshot.data()即可拿到完整的文档数据对象,再按需取对应字段即可
修改后的代码示例:
firebase.firestore() .collection('collectionOne') .doc(postId) .collection('collectionTwo') .doc(userId) .onSnapshot((snapshot) => { // 获取路径分段数组 const segments = snapshot.ref.path.segments // 取你需要的分段值 const targetValue = segments[1] // 若需要读取文档业务数据 const docData = snapshot.data() })
所有通过 ref 访问的属性都是官方承诺的稳定公开接口,不会随SDK版本迭代出现失效问题。
内容的提问来源于stack exchange,提问作者flaneurx
相关产品推荐
相关产品推荐

