繁体   English   中英

无法访问 Firestore 集合中的文档

[英]Not able to access documents in a collection Firestore

我有一个来自 firestore all_categories的对象数组。

let docID = getStoreID();
    let all_categories = [];
    db
        .collection("STORES")
        .doc(docID)
        .collection("CATEGORIES")
        .orderBy("CAT_ADDED_ON","desc")
        .limit(5).get().then((querySnapshot) => {
          querySnapshot.forEach((doc) => {
            all_categories.push(doc.data())
          })
    })

当我console.log(all_categories)它显示它有 2 个对象但是当我尝试遍历它们时它显示undefiened

像这样:

all_categories.forEach(category => {
  console.log(category)
})

控制台不打印任何内容。

可能是什么问题?

get()是异步的(返回一个Promise )意味着它会在完成之前转移到另一个任务。 then()方法返回一个Promise 它最多需要两个参数:Promise 成功和失败案例的回调函数。 因此,您必须执行以下操作才能访问category元素:

let docID = getStoreID();
    let all_categories = [];
    db
        .collection("STORES")
        .doc(docID)
        .collection("CATEGORIES")
        .orderBy("CAT_ADDED_ON","desc")
        .limit(5).get().then((querySnapshot) => {
          querySnapshot.forEach((doc) => {
            all_categories.push(doc.data());
             all_categories.forEach(category => {
                console.log(category)
            })
          })
    })

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

从数据库中检索数据是一个异步过程,您可以像这样将另一个then附加到它,当前一个 then 完成时,它将运行后一个。

 db.collection("STORES")
 .doc(docID)
 .collection("CATEGORIES")
 .orderBy("CAT_ADDED_ON","desc")
 .limit(5)
 .get()
 .then((querySnapshot) => { querySnapshot.forEach((doc) => { all_categories.push(doc.data())})
 .then(()=>{ all_categories.forEach(category => { console.log(category) })
  })

暂无
暂无

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

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