小程序雲開發 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 操作 |