db.collection(...).watch is not a function

本文主要讲述使用云开发实时数据推送时出现db.collection(…).watch is not a function错误的原因。一是在云函数里调用,因collection的watch目前只能在小程序端使用;二是小程序基础库版本太低,watch需基础库2.8.1及以上版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

尝试使用云开发的实时数据推送时,发生db.collection(…).watch is not a function错误。可能是以下几个原因:

  1. 你在云函数里调用,会发生这个错误,因为collection的watch目前只能在小程序端使用,所以用错的朋友请大喊一声卧槽~!
  2. 你小程序的基础库版本太低。watch是从基础库2.8.1开始支持,检查下基础库,选择2.8.1及以上的版本。
微信云开发提供了watch()方法,可以实时监听指定的数据集合或文档的变化,当进行数据集合或文档的增删改查操作时,会实时触发回调函数。下面是watch()方法的使用示例: 1.监听指定的数据集合 ```js // 获取云数据库引用以及指定的数据集合 const db = wx.cloud.database(); const collection = db.collection('book'); // 监听数据集合的变化 const watcher = collection.watch({ onChange: function(snapshot) { console.log('collection has changed', snapshot); }, onError: function(err) { console.error('the watch closed because of error', err); } }) // 关闭监听 watcher.close(); ``` 2. 监听指定的文档 ```js // 获取云数据库引用以及指定的文档 const db = wx.cloud.database(); const doc = db.collection('book').doc('xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'); // 监听文档的变化 const watcher = doc.watch({ onChange: function(snapshot) { console.log('doc has changed', snapshot); }, onError: function(err) { console.error('the watch closed because of error', err); } }) // 关闭监听 watcher.close(); ``` 在以上示例中,watch()方法接受一个对象参数,其中onChange和onError属性都是可选的。onChange属性用于指定回调函数,当监听到数据集合或文档变化时会触发该回调函数,并接受一个snapshot对象作为参数;onError属性用于指定回调函数,当出现错误时会触发该回调函数,并接受一个err对象作为参数。 snapshot对象包含了监听对象的最新状态,其中包含一些常用的属性: - docs:返回的文档列表 - docChanges:返回的变化列表 - eventType:更改的事件类型 - ns:更改的命名空间 - timestamp:更改的时间戳 上述示例中,该函数会打印所有的变化信息。当监听需要结束时,可以使用watcher.close()方法进行关闭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值