我正在尝试为我的应用执行类似的操作:
snapshotListeners() {
firestore()
.collectionGroup()
.where()
.onSnapshot({
error: //Handle error
next: firstSnapshot => {
firstSnapshot.docsChanges().forEach(change => {
//Data retrieved and used in the below query to get more data
firestore()
.collection()
.where() //using the data retrived from the above query here.
.onSnapshot({
error: //Handle error
next: secondSnapshot => {
secondSnapshot.docsChanges().forEach(change =>{
//More Data from second query
})
}
})
})
}
})
}
第二个查询取决于从第一个查询检索到的数据,我希望在各自文档中的两个查询中侦听更改。
例如,组功能:这是我的数据库结构:
Groups(top-level collection)
|_groupId(documents) - Members(subcollection)
|_groupId | |_uid(document)
| |_uid
|
|__groupdata(Fields like title, description, etc)
因此,我将使用first listener
来侦听Members子集合中特定用户文档的更改,并使用second listener
实时获取他所在的组(有关组的数据),以便当他从组中添加/删除,列表/前端就像WhatsApp一样自动更新。
或者即使组数据如标题,说明等发生了更改,这些更改也会在前端听到并更新。
是针对此用例建议的快照侦听器嵌套还是有其他方法?
非常感谢您的帮助。
嵌套这样的听众是很正常的,并且以合理的规模完成时,不必担心。合理是有点主观和依赖的,但可以说:适合移动应用程序的单个屏幕的东西可能是合理的上限。