有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
云开发数据库支持监听集合中符合查询条件的数据的更新事件。

建立监听

使用 watch() 方法即可建立监听,并且返回 watcher 对象,用于关闭监听。
符合条件的文档有任何变化,都会触发 onChange 回调。
Web
小程序
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() 即可关闭监听。
Web
小程序
watcher.close();

watcher.close();

说明
1. 适用场景(实时推送适用于广播场景,且10s内最大同时连接数支持50000,对于高并发单播场景不建议使用。)
单播场景:不同用户 watch 的 where 条件均不同。
广播场景:所有用户 watch 的 where 条件均相同。
2. 系统限制
2.1 监听记录数限制 一次监听的记录数上限为 5000,若超出上限会抛错并停止监听。监听过大量的数据时初始化会较慢,对监听效率也有影响,如果预期监听发起时少于 5000,但后续有可能超过 5000,请注意在即将超过时重新监听并保证不超过 5000。
2.2 最大连接数限制 最大连接数最高上限为50000,如有更大连接数上限需求的活动,请至少提前30天 联系我们
2.3 注意集合权限设置 集合的读权限设置在实时数据推送里同样生效,如果权限是设置为仅可读用户自己的数据,则监听的时候无法监听到非用户自己创建的数据。