在 react-native 中嵌套 firestore onSnapshot 侦听器?
Nesting firestore onSnapshot listeners in react-native?
我正尝试为我的应用做这样的事情:
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
来监听成员 sub-collection 中该特定用户的文档的更改,并使用 second listener
来检索组(关于组的数据) 他是实时的,所以当他 added/removed 来自群组时,list/frontend 会像 WhatsApp 一样自动更新。
或者即使更改了组数据,如标题、描述等,这些更改也会在 front-end 中听到并更新。
这种快照侦听器的嵌套是推荐用于此用例还是有其他方法?
非常感谢您的帮助。
像这样嵌套侦听器是很正常的,如果以合理的规模完成,则无需担心。什么是合理的有点主观和依赖,但让我们说:适合移动应用程序中单个屏幕的东西可能是一个合理的上限。
请记住,您需要自己管理侦听器。因此,保留您添加的嵌套侦听器的列表,并且仅在外部侦听器触发时添加新的(并删除过时的)。
如果您想要进一步扩展,可以将每个成员(嵌套文档)的相关数据复制到组(父文档)中。
作为第三种选择,您可以仅为特定组的成员创建一个单独的子集合,这样您就可以使用一个快照侦听器来侦听所有这些成员。
我正尝试为我的应用做这样的事情:
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
来监听成员 sub-collection 中该特定用户的文档的更改,并使用 second listener
来检索组(关于组的数据) 他是实时的,所以当他 added/removed 来自群组时,list/frontend 会像 WhatsApp 一样自动更新。
或者即使更改了组数据,如标题、描述等,这些更改也会在 front-end 中听到并更新。
这种快照侦听器的嵌套是推荐用于此用例还是有其他方法?
非常感谢您的帮助。
像这样嵌套侦听器是很正常的,如果以合理的规模完成,则无需担心。什么是合理的有点主观和依赖,但让我们说:适合移动应用程序中单个屏幕的东西可能是一个合理的上限。
请记住,您需要自己管理侦听器。因此,保留您添加的嵌套侦听器的列表,并且仅在外部侦听器触发时添加新的(并删除过时的)。
如果您想要进一步扩展,可以将每个成员(嵌套文档)的相关数据复制到组(父文档)中。
作为第三种选择,您可以仅为特定组的成员创建一个单独的子集合,这样您就可以使用一个快照侦听器来侦听所有这些成员。