仿照微信官方里的群聊设置自定义安全规则:
集合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列表里了也无法写数据库: