从获取的文档中获取文档引用 (Firestore)

Posted

技术标签:

【中文标题】从获取的文档中获取文档引用 (Firestore)【英文标题】:Get document references from fetched documents (Firestore) 【发布时间】:2022-01-20 18:11:26 【问题描述】:

(Firebase 版本 9)

我正在尝试从集合 "products" 的提取文档中获取 文档引用,下面有 2 组代码,但都返回 "undefined"

获取单个文档:

const docsSnap = await getDoc(
  doc(db, "products/WuAC97j0avTAFNs1kvdf"),
);

console.log(docsSnap.data().ref); // undefined

获取多个文档:

const docsSnap = await getDocs(
  collection(db, "products"),
);

console.log(docsSnap.docs[0].data().ref); // undefined

有没有办法从获取的文档中获取文档引用

【问题讨论】:

【参考方案1】:

从两个代码中移除 ".ref" 之前的 ".data()" 以获得文档引用

获取单个文档:

const docsSnap = await getDoc(
  doc(db, "products/WuAC97j0avTAFNs1kvdf"),
);
                    // Here
console.log(docsSnap.ref); // Tc

获取多个文档:

const docsSnap = await getDocs(
  collection(db, "products"),
);
                            // Here
console.log(docsSnap.docs[0].ref); // Tc

此外,您还可以通过将 ".ref" 替换为 ".id" 来获取文档 ID

获取单个文档:

const docsSnap = await getDoc(
  doc(db, "products/WuAC97j0avTAFNs1kvdf"),
);
                    // Here
console.log(docsSnap.id); // WuAC97j0avTAFNs1kvdf

获取多个文档:

const docsSnap = await getDocs(
  collection(db, "products"),
);
                            // Here
console.log(docsSnap.docs[0].id); // WuAC97j0avTAFNs1kvdf

【讨论】:

以上是关于从获取的文档中获取文档引用 (Firestore)的主要内容,如果未能解决你的问题,请参考以下文章

引用了 Firestore 如何从另一个集合文档 id 中获取集合值

从 documentSnapshot 获取 Cloud Firestore 文档参考

如何从对象中获取 FireStore 文档 ID?

如何从 Firestore 文档中获取自定义对象的 ArrayList? [复制]

从 firestore.DocumentReference 获取路径

Cloud Firestore:如何在我的集合查询中获取文档引用并将其映射为 JSON 值?