小程序云开发 Collection.watch 监听器构建和销毁
构建和销毁代码示例
// release/chatroom/index.js
const db = wx.cloud.database()
var musicwatcher = null
Page({
onLoad: function (options) {
this.musicwatcher = db.collection('MUSIC_LOG').where({
playstatus:1
}).watch({
onChange: function (snapshot) {
//只打印变动的信息
// console.log(snapshot.docChanges)
if (snapshot.docChanges.length != 0) {
// console.log(snapshot.docChanges)
that.setData({
songInfo: snapshot.docChanges[0].doc
})
}
},
onError: function (err) {
console.error('the watch closed because of error', err)
}
})
},
onUnload: function () {
console.log('隐藏页面')
//监听器销毁
this.musicwatcher.close()
}
})
接口watch
介绍
支持端:小程序 2.8.1, Web
监听集合中符合查询条件的数据的更新事件。使用 watch
时,支持 where
, orderBy
, limit
,不支持 field
。
参数
options: Object
属性 |
类型 |
默认值 |
必填 |
说明 |
onChange |
function |
|
是 |
成功回调,回调传入的参数 snapshot 是变更快照,snapshot 定义见下方 |
onError |
function |
|
是 |
失败回调 |
返回值
Object
Watcher 对象
属性 |
类型 |
说明 |
close |
function |
关闭监听,无需参数,返回 Promise,会在关闭完成时 resolve |
参数说明
snapshot 说明
字段 |
类型 |
说明 |
docChanges |
ChangeEvent[] |
更新事件数组 |
docs |
object[] |
数据快照,表示此更新事件发生后查询语句对应的查询结果 |
type |
string |
快照类型,仅在第一次初始化数据时有值为 init |
id |
number |
变更事件 id |
ChangeEvent 说明
字段 |
类型 |
说明 |
id |
number |
更新事件 id |
queueType |
string |
列表更新类型,表示更新事件对监听列表的影响,枚举值,定义见 QueueType |
dataType |
string |
数据更新类型,表示记录的具体更新类型,枚举值,定义见 DataType |
docId |
string |
更新的记录 id |
doc |
object |
更新的完整记录 |
updatedFields |
object |
所有更新的字段及字段更新后的值,key 为更新的字段路径,value 为字段更新后的值,仅在 update 操作时有此信息 |
removedFields |
string[] |
所有被删除的字段,仅在 update 操作时有此信息 |
QueueType 枚举值
枚举值 |
说明 |
init |
初始化列表 |
update |
列表中的记录内容有更新,但列表包含的记录不变 |
enqueue |
记录进入列表 |
dequeue |
记录离开列表 |
DataType 枚举值
枚举值 |
说明 |
init |
初始化数据 |
update |
记录内容更新,对应 update 操作 |
replace |
记录内容被替换,对应 set 操作 |
add |
记录新增,对应 add 操作 |
remove |
记录被删除,对应 remove 操作 |