資訊動態(tài)

微信《小程序·云》實時數(shù)據(jù)推送支持實時推送變更數(shù)據(jù)的能力

日期:2019-09-10 作者:管理員 來源:互聯(lián)網(wǎng)

微信《小程序·云》實時數(shù)據(jù)推送支持實時推送變更數(shù)據(jù)的能力【珠海微信小程序定制開發(fā)電話】為了進(jìn)一步提高在即時通信、實時數(shù)據(jù)更新和推送等場景下的開發(fā)效率,小程序·云開發(fā)新增實時數(shù)據(jù)推送能力。開發(fā)者在小程序端給定查詢條件后,每當(dāng)查詢結(jié)果發(fā)生變更時,小程序可收到一個更新事件,實時獲取更新內(nèi)容。實時數(shù)據(jù)推送可被廣泛地應(yīng)用于棋牌類等回合制小游戲、在線協(xié)作文檔以及團(tuán)隊任務(wù)管理等場景。

微信《小程序·云》實時數(shù)據(jù)推送支持實時推送變更數(shù)據(jù)的能力

微信《小程序·云》實時數(shù)據(jù)推送支持實時推送變更數(shù)據(jù)的能力


介紹

云開發(fā)數(shù)據(jù)庫支持實時推送變更數(shù)據(jù)的能力,給定查詢條件,每當(dāng)數(shù)據(jù)庫更新而導(dǎo)致查詢條件對應(yīng)的查詢結(jié)果發(fā)生變更時,小程序可收到一個更新事件,其中可獲取更新內(nèi)容和更新后的查詢結(jié)果快照。

實時數(shù)據(jù)推送有廣泛應(yīng)用場景,此處是一些示例:

  1. 聊天/即時通信:小游戲內(nèi)聊天、大廳廣播、區(qū)服廣播等;企業(yè)內(nèi)部小程序中的即時通信能力等

  2. 多人小游戲:使用狀態(tài)同步的小游戲,如棋牌類等回合制游戲

  3. 協(xié)作工具:如在線協(xié)作文檔、團(tuán)隊任務(wù)管理等

  4. 實時應(yīng)用狀態(tài)同步:以信息流為例,可以實時獲取最新文章、以及最新評論、點贊、通知等內(nèi)容,讓交互更順暢自然

監(jiān)聽

調(diào)用 Collection 上的 watch 方法即可監(jiān)聽給定查詢條件對應(yīng)的數(shù)據(jù):

const db = wx.cloud.database() const watcher = db.collection('todos').where({ team: 'our dev team' }).watch({ onChange: function(snapshot) { console.log('docs\'s changed events', snapshot.docChanges) console.log('query result snapshot after the event', snapshot.docs) console.log('is init data', snapshot.type === 'init') }, onError: function(err) { console.error('the watch closed because of error', err) } }) // ... // 等到需要關(guān)閉監(jiān)聽的時候調(diào)用 close() 方法 watcher.close()

onChange  onError 是必傳參數(shù)。onChange 用于接收變更快照,onError 用于處理監(jiān)聽錯誤。如果監(jiān)聽發(fā)起失敗或監(jiān)聽過程中出現(xiàn)不可恢復(fù)的錯誤,則會終止監(jiān)聽并通過 onError 拋出異常。onChange 會在第一次監(jiān)聽初始化及后續(xù)數(shù)據(jù)變更時收到推送事件。第一次初始化時會收到的查詢條件對應(yīng)的查詢結(jié)果(此處不會有默認(rèn) 20 條上限,包含集合中所有滿足查詢條件的記錄),后續(xù)變更事件會包含變更內(nèi)容和變更后的查詢結(jié)果快照。

onChange 收到的 snapshot 變更快照中帶有如下字段:

字段 類型 說明
docChanges ChangeEvent[] 更新事件數(shù)組
docs object[] 數(shù)據(jù)快照,表示此更新事件發(fā)生后查詢語句對應(yīng)的查詢結(jié)果
type string 快照類型,僅在第一次初始化數(shù)據(jù)時有值為 init
id number 變更事件 id

ChangeEvent 記錄變更事件的內(nèi)容包括:

字段 類型 說明
id number 更新事件 id
queueType string 列表更新類型,表示更新事件對監(jiān)聽列表的影響,枚舉值,定義見 QueueType
dataType string 數(shù)據(jù)更新類型,表示記錄的具體更新類型,枚舉值,定義見 DataType
docId string 更新的記錄 id
doc object 更新的完整記錄
updatedFields object 所有更新的字段及字段更新后的值,key 為更新的字段路徑,value 為字段更新后的值,僅在 update 操作時有此信息
removedFields string[] 所有被刪除的字段,僅在 update 操作時有此信息

DataType 枚舉值

枚舉值 說明
init 初始化數(shù)據(jù)
update 記錄內(nèi)容更新,對應(yīng) update 操作
replace 記錄內(nèi)容被替換,對應(yīng) set 操作
add 記錄新增,對應(yīng) add 操作
remove 記錄被刪除,對應(yīng) remove 操作

QueueType 枚舉值

枚舉值 說明
init 初始化列表
update 列表中的記錄內(nèi)容有更新,但列表包含的記錄不變
enqueue 記錄進(jìn)入列表
dequeue 記錄離開列表

變更事件會細(xì)分記錄數(shù)據(jù)變更類型 dataType 和監(jiān)聽列表變更類型 queueType,其可能的搭配和意義如下。

dataType queueType 說明
init init 監(jiān)聽開始時的初始化數(shù)據(jù)
update update 記錄部分更新,更新后仍在查詢結(jié)果列表中
update enqueue 記錄部分更新,更新后進(jìn)入查詢結(jié)果列表
update dequeue 記錄部分更新,更新后離開查詢結(jié)果列表
replace update 記錄被替換,更新后仍在查詢結(jié)果列表中
replace enqueue 記錄被替換,更新后進(jìn)入查詢結(jié)果列表
replace dequeue 記錄被替換,更新后離開查詢結(jié)果列表
add enqueue 記錄是新增記錄,新增后進(jìn)入查詢結(jié)果列表
remove dequeue 記錄被刪除,離開查詢結(jié)果列表

注意事項與系統(tǒng)限制

監(jiān)聽返回的數(shù)據(jù)不受默認(rèn) 20 條限制

監(jiān)聽返回的數(shù)據(jù)可能超過 20 條,不受小程序端默認(rèn) 20 條上限限制。

監(jiān)聽暫只支持 where 語句

監(jiān)聽暫僅支持 where 語句,不支持 orderBy、limit、field 等語句。

監(jiān)聽記錄數(shù)限制

一次監(jiān)聽的記錄數(shù)上限為 5000,若超出上限會拋錯并停止監(jiān)聽。監(jiān)聽過大量的數(shù)據(jù)時初始化會較慢,對監(jiān)聽效率也有影響,如果預(yù)期監(jiān)聽發(fā)起時少于 5000,但后續(xù)有可能超過 5000,請注意在即將超過時重新監(jiān)聽并保證不超過 5000。

最佳實踐

只監(jiān)聽必要的數(shù)據(jù)

監(jiān)聽時應(yīng)明確查詢條件,只監(jiān)聽必須用到的數(shù)據(jù),避免監(jiān)聽不必要的數(shù)據(jù),以此提高初次加載數(shù)據(jù)的性能以及接收數(shù)據(jù)變更的性能。

二維碼
掃二維碼手機查看該文章
當(dāng)前網(wǎng)址:http://xjsccl.cn/wechat/663.html

相關(guān)資訊

?
Copyright ? 2007-2024 珠海市網(wǎng)訊互聯(lián)信息科技有限公司 xjsccl.cn 版權(quán)所有
粵公網(wǎng)安備44040202000391號 粵ICP備19117377號 網(wǎng)站地圖 站點地圖
在線客服