【问题标题】:Problem with request from Subcollection in FirestoreFirestore 中子集合的请求问题
【发布时间】:2022-01-12 13:20:52
【问题描述】:

嘿,我尝试解决一个问题,我需要根据之前的查询获取子集合。


 const kurzRef = collectionGroup(db, 'kurzwaffensub' );
 const FirstOperation = query(kurzRef,where("kurzModell", "==", `${kurzModell}` ));
    


const getWaffenDaten = async () => {
    const modell = await getDocs(FirstOperation);
    const data = [];

for (const doc of modell.docs) {



  const parentDoc = await getDoc(doc.ref.parent.parent);
  const { Name, avatarPath } = parentDoc.data();

  // Thats the code snippet which I have my problem with 
  const  waffenbilderRef = collection(db, 'users', doc.data().uid, 'waffenbildersub')
      let subCollectionDocs = await getDocs(waffenbilderRef)
  // 


     data.push({
       ...doc.data(),
          Name,
          subCollectionDocs,
          avatarPath
     });

我通过第一次操作获得的文档具有document ID 的字符串字段值

之后我需要根据 Fieldvalue document ID 获取子集合 这是您在图片中看到的 3 个子系列之一。

不幸的是,我得到了一些我不完全理解的东西

如您所见,我得到了subCollectionDocs,但它不显示数据。

您可以在RED marked Arrow 旁边看到subcollectionDocs 的结果中有2 个文档。这是对的,但我不知道如何正确检索数据。

【问题讨论】:

  • 您需要在您的收藏中传递参考“users/waffenbildersub”,而不仅仅是“users”。

标签: javascript reactjs firebase google-cloud-firestore


【解决方案1】:

您正在将子集合查询中的完整 DocumentSnapshot 添加到您的状态,这就是您 console.log 它时显示的内容。

我的猜测是您希望只看到文档的数据和 ID,您可以这样做:

const subCollectionDocs = await getDocs(waffenbilderRef)
const subCollectionData = subCollectionDocs.docs.map((doc) => {
  return { id: doc.id, ...doc.data() };
}
console.log(subCollectionData);

 data.push({
   ...doc.data(),
      Name,
      subCollectionData,
      avatarPath
 });

【讨论】:

  • 是的,我只想从中获取数据。但现在我得到了Unhandled Rejection (TypeError): subCollectionDocs.map is not a function。我试图让这段代码工作很长时间,但我做不到:DD。我也使用了foreach,但是我得到了同样的错误,它不是一个函数。
  • 糟糕,你需要一个docs,因为你所谓的subCollectionDocs实际上是一个QuerySnapshot对象。检查更新的代码。
  • 现在可以了,非常感谢。你我的英雄:D
猜你喜欢
  • 2021-08-13
  • 2019-08-17
  • 2019-10-19
  • 2019-12-11
  • 2020-01-25
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
相关资源
最近更新 更多