繁体   English   中英

Firestore 获取存在子集合的文档

[英]Firestore get document where subcollection exist

这有可能做到吗? 经过一番研究,我找不到办法做到这一点。
我在这里的“解决方法”是首先获取所有子集合文档,检索它们的父键并再次检索。 但我相信会有更好的方法来做到这一点..

let subDocs = await firestoreDb.collectionGroup('sub_collections').get()
let parentDocKeys = {};
subDocs.docs.forEach(async (element) => {
    parentDocKeys[element.ref.parent.parent.id] = 1;
});
let result = await firestoreDb.collection('parentCollection').where(firestore.FieldPath.documentId(), 'in', Object.keys(parentDocKeys)).get();
return res.send(result.docs.map(x=>x.data()));

Firestore 查询只能根据文档本身的数据过滤文档。 无法检查任何其他文档中的数据,无论是在同一集合中,还是在其他(子)集合中。

这意味着不可能只检索存在子集合的文档而不更改父文档中的数据。 例如,如果每次添加/删除子集合时都更新父文档中的字段(例如hasSubcollectionBla ),则可以过滤该字段的值。

你这样做是使数据的写入更加复杂,从而使读取/查询变得更容易和更具可扩展性。 这是使用 NoSQL 数据库(例如 Firestore)时的常见权衡。

暂无
暂无

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

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