gpt4 book ai didi

javascript - 如何在 Firestore Web 版本 9(模块化)的集合中获取子集合?

转载 作者:行者123 更新时间:2023-12-04 13:06:21 25 4
gpt4 key购买 nike

我正在使用 Firestore Web 8 的链接模式,但我正在将其更新到模块 9,并且很难弄清楚如何获取我的子集合的所有内容(我的集合中的集合) .
我的旧功能是这样的,并且工作正常:

function getInfo(doc_name) {
let infoDB = db
.collection("collection_name")
.doc(doc_name)
.collection("subcollection_name")
.get();

return alunoHistorico;
}
所以用模块方式我尝试了这段代码
// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);

const docRef = doc(db, "collection_name", "doc_name");
const docSnap = await getDoc(docRef);

if (docSnap.exists()) {
console.log("Document data:", docSnap.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
但是函数 doc() 需要一个偶数参数(不包括 db 参数),所以如果我尝试使用这样的 3 个参数,我会收到一个错误:
const docRef = doc(db, "collection_name", "doc_name", "subcollection_name");
为了它工作,我必须传递子集合中的确切文档
const docRef = doc(db, "collection_name", "doc_name", "subcollection_name", "sub_doc");
但这对我不起作用,因为我在子集合中有一个列表 os docs,我想检索它。
那么我怎样才能在我的子集合中获取我的所有文档呢?
感谢任何花时间的人。

最佳答案

您需要使用 collection()获取 CollectionReference 而不是 doc()返回 DocumentReference :

const subColRef = collection(db, "collection_name", "doc_name", "subcollection_name");
// odd number of path segments to get a CollectionReference

// equivalent to:
// .collection("collection_name/doc_name/subcollection_name") in v8

// use getDocs() instead of getDoc() to fetch the collection

const qSnap = getDocs(subColRef)
console.log(qSnap.docs.map(d => ({id: d.id, ...d.data()})))
我写了一个关于 doc() 之间区别的详细答案和 collection() (在 V8V9 中)这里:
Firestore: What's the pattern for adding new data in Web v9?

关于javascript - 如何在 Firestore Web 版本 9(模块化)的集合中获取子集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69286935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com