我在从firestore获取数据时遇到了一个问题。我真的不明白为什么productDoc.ref下没有一个收集函数,如果有人能帮助我,我将非常感激。
我使用的是最新版本的Firebase,但是如果我按照firebase v9的文档操作,我仍然无法访问prices子集合。
useEffect(() => {
const q = query(collection(db, "products"), where("active", "==", true));
// console.log(db.collection("products").getDocuments());
const unsub = onSnapshot(q, (querySnapshot) => {
const products = {};
querySnapshot.forEach(async (productDoc) => {
products[productDoc.id] = await productDoc.data();
console.log(await productDoc, "ref");
const priceSnap = await productDoc.ref.collection("prices").get();
priceSnap.doc.forEach((price) => {
products[productDoc.id].price = {
priceId: price.id,
priceData: price.data(),
};
});
});
setProducts(products);
});
}, []);
2条答案
按热度按时间3zwtqj6y1#
您不能从模块化API中的
DocumentReference
对象链接collection
调用。您需要将
DocumentReference
传递给对顶级collection
函数的调用:zlhcx6iw2#
我发现Frank的代码仍然不能正常工作,因为forEach内部的await将不按预期运行。您必须用for循环替换forEach。
在深入研究了几天之后,我发现下面的代码是有效的。