Javascript 如何从firebase firestore异步获取所有父集合的所有文档?
我试图从firestore数据库中获取所有集合中的所有文档,该数据库如下所示:Javascript 如何从firebase firestore异步获取所有父集合的所有文档?,javascript,reactjs,firebase,google-cloud-firestore,Javascript,Reactjs,Firebase,Google Cloud Firestore,我试图从firestore数据库中获取所有集合中的所有文档,该数据库如下所示: -users(collection) -user1 (document) -snippets(collection) -snippetdId1 (document) -snippetdId2 (document) -user2 (document) -snippets (collection) -
-users(collection)
-user1 (document)
-snippets(collection)
-snippetdId1 (document)
-snippetdId2 (document)
-user2 (document)
-snippets (collection)
-snippetdId1 (document)
-snippetdId2 (document)
-snippetdId3 (document)
我遇到的问题是,“allSnippets”数组的长度为0,但它拥有我想要的所有元素,我知道问题在于同步性,但我不知道如何解决它。
我尝试过使用.then代替,但也是一样的,长度为0,但包含所有元素。问题是,
控制台.log(allSnippets)
在运行任何allSnippets.push(snippet.data()
之前运行。如果您添加更多日志记录,或在调试器中运行代码,您很容易看到这一点
通常,您会使用Promise.all
等待对代码段的所有get()
调用完成。但这里有一种更简单的方法。因为您希望从所有用户处获取所有代码段,所以可以使用。这样,整个代码就减少到:
firebase.firestore()
.collectionGroup("snippets")
.get()
.then((snippetsSnapshot) => {
const snippets = snippetsSnapshot.docs.map(doc => doc.data());
console.log(snippets);
})
不客气,爱奥尼斯!
firebase.firestore()
.collectionGroup("snippets")
.get()
.then((snippetsSnapshot) => {
const snippets = snippetsSnapshot.docs.map(doc => doc.data());
console.log(snippets);
})