javascript - Firestore 取消订阅更新
问题描述
我在 YouTube 上关注这个Google Cloud Firestore示例并成功获取实时更新。但是,我不知道如何取消订阅更新,因为视频中没有解释。我阅读了文档以创建一个 unsubscribe() 函数,但它对我不起作用。
getRealtimeUpdates = function(document) {
firestore.collection("collection_name")
.onSnapshot(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
if (doc && doc.exists) {
const myData = doc.data();
// DO SOMETHING
}
});
});
}
解决方案
该firestore.collection().onSnapshot()
函数返回一个取消订阅函数。只需调用它,您就应该是 guchi。
您还可以在此处找到另一个示例:How to remove listener for DocumentSnapshot events (Google Cloud FireStore)
这是我创建的应该可以工作的片段:
let unsubscribe;
getRealtimeUpdates = function(document) {
unsubscribe = firestore.collection("collection_name")
.onSnapshot(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
if (doc && doc.exists) {
const myData = doc.data();
// DO SOMETHING
}
});
});
}
// unsubscribe:
unsubscribe();
相应 Firebase 文档的路径:
https://firebase.google.com/docs/reference/js/firebase.firestore.CollectionReference#onSnapshot
返回 一个取消订阅函数,可以调用它来取消快照侦听器。
推荐阅读
- reactjs - React Hooks:这种全局状态模式的陷阱?
- linux - 获取mpv中当前播放文件的完整路径
- rxjs - 为什么 EMPTY 不能完成 observable?
- java - Android Studio 构建 gradle 失败
- json - 从node js程序运行时如何在json-diff中提供选项
- java - 我正在尝试使用 JAVA 制作注册表单,但我无法运行我的代码
- python - 如何在一个 python 类中打开串行连接,但在另一个类中使用该连接?
- python - 导入 img_to_array 函数时出错:AttributeError:模块“tensorflow”没有属性“name_scope”
- sql - 如何在 CASE 语句中使用 ANY?
- physics - 求微载体粒子的斯托克斯数