Javascript 如何从firebase 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) -

我试图从firestore数据库中获取所有集合中的所有文档,该数据库如下所示:

-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);
    })