如何在React中通过引用值筛选Firestore指定集合的文档数据
Firestore筛选Reference类型字段返回空的解决方案
你用字符串文档ID筛选section2里的doc_id(Reference类型)时返回空,核心原因是:Reference类型字段存储的是完整的文档引用对象,不是单纯的字符串ID,直接传字符串和字段里的引用对象不匹配,所以查不到数据。
修正后的代码
需要先构造对应文档的DocumentReference对象,再用这个对象作为筛选条件,代码如下:
const getDocumentData = async () => { // 生成section1中目标文档的引用实例 const targetDocRef = doc(db, "section1", "H0ovBXfrwen32Xb4Ig9A"); const q = query( collection(db, "section2"), where("doc_id", "==", targetDocRef) ); const querySnapshot = await getDocs(q); querySnapshot.forEach((doc) => { console.log(doc.id, " => ", doc.data()); }); };
关键说明
- Firestore的Reference类型本质是包含「集合路径+文档ID」的结构化对象,查询时必须用同类型的
DocumentReference实例匹配,不能直接用字符串ID。 - 用
doc(db, 集合名, 文档ID)方法可以快速生成目标文档的引用,将其传入where条件后,就能正确匹配到关联的section2文档。
内容的提问来源于stack exchange,提问作者Raju Singh
相关产品推荐
相关产品推荐

