[英]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.