云数据库 自定义权限设置 问题?
发布于 6 年前 作者 baiqiang 4392 次浏览 来自 官方Issues

根据微信文档,权限自定义实例: 群聊 ,模拟使用

聊天室集合room:

{
  _id: string,
  owner: string, // 群主 openid
  name: string, // 群名
  members: string[], // 成员 openid 列表
}

权限定义:

{
"read": "auth.openid in get('database.chats.$(doc._id)').members || doc.creator == auth.openid",
"write": "doc._openid == auth.openid"
}

在小程序端, 在云数据库写记录成功如下:

_id: "chatRoomId",
_openid: "thisMyOpenid".
owner: "thisMyOpenid",
members: ['openidNo1','openidno2',"thisMyOpenid"],
name: "chatRoomName"

在小程序端 读

await db.collection('room').where({_openid'{openid}',owner'{openid}'}).get()

获得所有‘{openid}'创建的所有 rooms,这个没问题

然后我使用:

await db.collection('room').where({members: _.in(['{openid}'])}).get()
或者
await db.collection('room').where({members: _.in(['one_Openid_In_Members'])}).get()
或者
await db.collection('room').where({}).get()
或者
await db.collection('room').where({_id: _.neq("")}).get()

获得在 room’s members 里的人的所有rooms, 一直出错

Uncaught (in promise) Error Error: errCode: -502003 database permission denied | errMsg: Permission denied

我知道我的查询条件与权限设置 "auth.openid in get(`database.chats.${doc._id}`).members” 不相符

需要在查询中有 _id 参数,但对获得所有room id,显然不行,微信的文档实在是简约,我还没有测试聚合

不知道聚合与这些权限的设置的关系, 我担心可能又是困难重重。

stop eating请帮下忙!


1 回复
回到顶部