如何解决Firebase/云 Firestore:onSnapshot() 与 on()
我一直成功地使用 onSnapshot
来提醒我的代码基础数据的变化,如
// Set up to listen for changes to the "figures" collection,that is,// someone has created a new figure that we will want to list on the screen.
setFiguresListener: function () {
// `figuresCR` is a collection reference defined elsewhere
return this.figuresCR.onSnapshot((iFigs) => {
iFigs.forEach((fSnap) => {
const aFigure = figureConverter.fromFirestore(fSnap,null);
const dbid = aFigure.guts.dbid; // ID of the "figure" in the database
nos2.theFigures[dbid] = aFigure; // update the local copy of the data
});
nos2.ui.update();
console.log(` Listener gets ${iFigs.size} figures`);
});
但我现在读到了 on
in the docs。它解释说:
[on()
函数] 侦听特定位置的数据更改。
这是从数据库读取数据的主要方式。您的回电
将在初始数据时触发,并在数据出现时再次触发
变化。使用 off( )
停止接收更新。有关详情,请参阅 Retrieve Data on
the Web。
语法有点不同,on()
的作用似乎与 onSnapshot()
大致相同。
那么真正的区别是什么?我们应该使用 on()
而不是 onSnapshot()
吗?
解决方法
on()
是从 Firebase 实时数据库读取的操作。这是一个完全不同的数据库,其 API 与 Firestore 不同。它们基本上没有重叠。 Firestore 没有 on()
操作。
如果您使用 Firestore,请忽略有关实时数据库的所有文档,并坚持使用 onSnapshot()
获取实时更新。
落入这个 tar 坑的其他人:在 API 文档页面中,您可能认为因为 firestore 是 firebase 下的数据库,您可以在 firebase.database
下寻求帮助。但不:只查看 next 部分,firebase.firestore
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。