小程序雲開發 Collection.watch 監聽器構建和銷燬

小程序雲開發 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 操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章