收藏
回答

设置了云数据库的自定义安全规则,小程序端不能watch数据库,如何设置?

仿照微信官方里的群聊设置自定义安全规则:

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/security-rules.html#%E7%A4%BA%E4%BE%8B-1%EF%BC%9A%E7%BE%A4%E8%81%8A

集合group如下:

{
  "_id": "a72823ff65722caf02a1bdeXXXXXXXX",
  "opengid": "tG1FRz5WowW8_z4mY2XXXXX",//群id
  "members": ["o1FRz5Wr21HTQnRKPPxxxxx"],//成员 openid 列表
  "createTime": 1701981359069,
  "money": 10,
  "events": [],
  "hotSpotId": 0
}


自定义安全规则:

{

"read": "auth.openid in get(`database.group.${doc._id}`).members",

"write": "auth.openid in get(`database.group.${doc._id}`).members"

}




监听的代码如下:

// 监听群的数据
  watchGroupInfo(opengid) {
    const _this = this
    groupWatcher = db.collection('group')
      .where({
        // _openid: '{openid}',
        opengid: opengid,
      })
      // 发起监听
      .watch({
        onChange: function (snapshot) {
          console.log('监听群的数据snapshot', snapshot)
          if (snapshot && snapshot.docs.length > 0) {
            _this.setData({
              groupInfo: snapshot.docs[0]
            })
          } else {
            _this.setData({
              groupInfo: null
            })
          }
        },
        onError: function (err) {
          console.error('监听群的数据报错', err)
        }
      })
  },


监听一直报错,而且我的openid明明已经在group的members列表里了也无法写数据库:


回答关注问题邀请回答
收藏
登录 后发表内容