gpt4 book ai didi

javascript - 如何访问 Firestore 中查询文档的子集合?

转载 作者:行者123 更新时间:2023-12-04 00:58:40 25 4
gpt4 key购买 nike

语境 :以下是我在 Firebase Firestore 中的收藏和文档的屏幕截图。基本上,每个交易文档都有自己的字段和其中的聊天集合。

我需要什么 :我的目标是使用特定的 handler_id 查询文档并访问其中的聊天集合。

发生了什么 : 这个查询只返回交易字段

 db.collection("transaction").where("handler_id", "==", 3)

如何在查询的文档中包含聊天集合?您对我如何更有效地构建数据有什么建议吗?
enter image description here

最佳答案

Firestore 中的查询是浅层的,这意味着当您通过查询查询文档时,您只能获取正在查询的集合中的相应文档,而不是它们子集合中的文档。

所以需要先查询父级transaction文档(也是异步过程),拿到后查询子集合(也是异步过程)。

如果我们假设 transaction 中只有一个文档收藏与 handler_id = 3 ,您将按照以下方式做一些事情:

db.collection("transaction").where("handler_id", "==", 3).get()
.then(querySnapshot => {
return querySnapshot.docs[0].ref.collection('chat').get();
})
.then(querySnapshot => {
querySnapshot.forEach(doc => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
});

如果你想设置一个监听 chat子集合,您只需调用 onSnapshot() 方法而不是 get() 一,如下:
db.collection("transaction").where("handler_id", "==", 3).get()
.then(querySnapshot => {
querySnapshot.docs[0].ref.collection('chat').onSnapshot(querySnapshot => {
// Do whatever you want with the querySnapshot
// E.g. querySnapshot.forEach(doc => {...})
// or querySnapshot.docChanges().forEach(change => {...})
// See https://firebase.google.com/docs/firestore/query-data/listen#listen_to_multiple_documents_in_a_collection
});
});

关于javascript - 如何访问 Firestore 中查询文档的子集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60506363/

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