如何将Firestore集合存储到变量中,然后使用Javascript访问其中的文档?

如何将Firestore集合存储到变量中,然后使用Javascript访问其中的文档?,javascript,google-cloud-firestore,Javascript,Google Cloud Firestore,我很高兴你正在阅读,因为我在任何地方都找不到答案。问题是我正在用firestore构建一个应用程序,它有两个集合:用户和优惠。以前我在做什么 db.collection("users").doc(firebaseUser.uid) .get() .then( doc => { let username = doc.data().user_name )} 每次我需要访问一个用户的数据和相同的报价。但我意

我很高兴你正在阅读,因为我在任何地方都找不到答案。问题是我正在用firestore构建一个应用程序,它有两个集合:用户和优惠。以前我在做什么

   db.collection("users").doc(firebaseUser.uid)
        .get()
        .then( doc => {
                let username = doc.data().user_name
         )}
每次我需要访问一个用户的数据和相同的报价。但我意识到最好是一次获取所有数据,将其放入一个对象中,然后在那里查找。由于firestore不允许您一次获取所有一级集合,因此我创建了一个名为MyAppName的新集合,其中包含用户和提供的文档,因此我将所有内容向下移动了一级。然后我试着去做

  db.collection("MyAppName")
  .get()
  .then(doc => {
   let username = doc.doc("users").collection(firebaseUser.uid).data().user_name;
   })
但是doc.doc不是一个函数。当我这样做的时候

          console.log(doc.data())
它也不是一个函数,但当我这样做的时候

          console.log(doc.docs.map(docs => docs.data()))
它回来了

       (2) [{…}, {…}]
       0:
       1: {offer_type: "Product"}
       __proto__: Object
       1:
       user_name: "Ale"
       __proto__: Object
       length: 2
这是一个真正的背部疼痛。我的应用程序以另一种方式运行得非常完美,但我想让它只加载一次数据,因为api非常慢,而且firestore也会根据请求收费。 非常感谢您的帮助:

编辑:我的数据库结构是

        MyAppname
                 |
                  users
                 |     |
                 |      user_name
                 |
                  offers
                        |
                         offer_type

我解决了它,方法是

    const dataobject = doc.docs.map(docs => docs.data())
    let users = (dataobject[1])
    let offers = (dataobject[0])

然后用对象方法处理用户和报价。

请编辑问题以显示最终的数据库结构。我不清楚你现在有什么。还要记住,doc变量实际上是DocumentSnapshot对象,而不是DocumentReference。