云开发数据库支持监听集合中符合查询条件的数据的更新事件。
建立监听
使用
watch()
方法即可建立监听,并且返回 watcher
对象,用于关闭监听。符合条件的文档有任何变化,都会触发
onChange
回调。const cloudbase = require("@cloudbase/js-sdk");const app = cloudbase.init({env: "xxxx"});// 1. 获取数据库引用var db = app.database();const watcher = db.collection("todos").where({// query...}).watch({onChange: function (snapshot) {console.log("snapshot", snapshot);},onError: function (err) {console.error("the watch closed because of error", err);}});
// 1. 获取数据库引用const db = wx.cloud.database();const watcher = db.collection("todos").where({// query...}).watch({onChange: function (snapshot) {console.log("snapshot", snapshot);},onError: function (err) {console.error("the watch closed because of error", err);}});
关闭监听
调用
watcher.close()
即可关闭监听。watcher.close();
watcher.close();
说明
1. 适用场景(实时推送适用于广播场景,且10s内最大同时连接数支持50000,对于高并发单播场景不建议使用。)
单播场景:不同用户 watch 的 where 条件均不同。
广播场景:所有用户 watch 的 where 条件均相同。
2. 系统限制
2.1 监听记录数限制
一次监听的记录数上限为 5000,若超出上限会抛错并停止监听。监听过大量的数据时初始化会较慢,对监听效率也有影响,如果预期监听发起时少于 5000,但后续有可能超过 5000,请注意在即将超过时重新监听并保证不超过 5000。
2.2 最大连接数限制
最大连接数最高上限为50000,如有更大连接数上限需求的活动,请至少提前30天 联系我们。
2.3 注意集合权限设置
集合的读权限设置在实时数据推送里同样生效,如果权限是设置为仅可读用户自己的数据,则监听的时候无法监听到非用户自己创建的数据。