gpt4 book ai didi

firebase - Firestore 查询已删除文档的子集合

转载 作者:行者123 更新时间:2023-12-02 22:01:26 27 4
gpt4 key购买 nike

使用 Firebase 控制台时,可以查看所有文档和集合,甚至是路径中包含不存在“文档”的子集合。

这在此处包含的图片中进行了说明,并且如文档和屏幕截图中所述。这些文档不会出现在查询或快照中。那么,当查询不返回这些嵌套子集合时,控制台如何找到它们呢? Picture showing the Firebase console

是否可以以某种方式列出这些文档。既然控制台可以做到,看来一定有办法。如果可以找到这些文档,是否可以创建一个查询来获取所有不存在但仅限于具有嵌套子集合的文档? (因为所有不存在的文档的集合将是无限的)

最佳答案

管理 SDK 提供 listDocuments具有以下描述的方法:

The document references returned may include references to "missing documents", i.e. document locations that have no document present but which contain subcollections with documents. Attempting to read such a document reference (e.g. via .get() or .onSnapshot()) will return a DocumentSnapshot whose .exists property is false.

将此与 example for listing subcollections 结合起来,您可以执行如下操作:

// Admin SDK only
let collectionRef = firestore.collection('col');

return collectionRef.listDocuments().then(documentRefs => {
return firestore.getAll(documentRefs);
}).then(documentSnapshots => {
documentSnapshots.forEach(doc => {
if( !doc.exists ) {
console.log(`Found missing document: ${documentSnapshot.id}, getting subcollections`);
doc.getCollections().then(collections => {
collections.forEach(collection => {
console.log('Found subcollection with id:', collection.id);
});
});
}
});
});

请注意,Firebase CLI 使用不同的方法。通过 REST API,它可以查询给定路径下的所有文档,而无需先知道它们的具体位置。您可以在递归删除代码here中看到它是如何工作的。 .

关于firebase - Firestore 查询已删除文档的子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54287565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com