繁体   English   中英

如何获取firebase firestore中完整的文档路径?

[英]How to get the complete document path in firebase firestore?

我设法获取了 firestore 中所有“工作表”集合中的所有文档和文档 ID。 参考下面的代码 -

const baseRef = admin.firestore().collectionGroup("sheets").where("date", "==", date);
const querySnap = await baseRef.get();
const docSnap = querySnap.docs;

docSnap.forEach((doc) => {
    console.log("DOC ID ---->>>", doc.id);
    // Here I want to get all the required documents from 'members' subcollection present inside this      document
});

现在,这些文档中的每一个都包含一个名为“成员”的子集合。 我只想要来自“members”集合的文档,其中“memberId”等于“memberId”。 我怎样才能得到这些文件?

我尝试了以下代码,但没有用 -

const baseRef = admin.firestore().collectionGroup("sheets").where("date", "==", date).collectionGroup("members").where("memberId", "==", memberId);
const querySnap = await baseRef.get();
const docSnap = querySnap.docs;

docSnap.forEach((doc) => {
    console.log("DOC ID ---->>>", doc.id);
});

它返回以下错误 -

admin.firestore(..).collectionGroup(..).....is not a function

您不能像使用以下方法那样通过调用两次collectionGroup()方法来定义Query

const baseRef = admin.firestore().collectionGroup("sheets").where("date", "==", date).collectionGroup("members").where("memberId", "==", memberId);

一种解决方案是复制member文档中的date字段(即将字段值从父工作sheet文档复制到它们的member子文档)并定义查询如下:

const baseRef = admin.firestore().collectionGroup("members").where("memberId", "==", memberId).where("date", "==", date);

请注意,您需要构建一个复合索引,并且您的数据库中不应该有其他名为members的子集合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM