收藏
回答

根据官方文档设置数据库权限后不知道怎么读取数据,疑似文档错误?

在这个文档中 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

有下面这个数据库安全规则:

以及这个集合字段结构:


然后,我按照这个文档,新建一个同样的 room 集合:

然后把安全规则改为和文档中一致:

规则如下:

{
"read": "auth.openid in get('database.room.${doc._id}').members",
"write": false
}


现在,已经确保文档中有一个members数组,并且当前用户的openid在这个数组中,然后使用下面的代码读取数据:

    getApp().cloud.database().collection('room').where({
      _id: '9c1e6a3167178ee4108f089b78b14371'
    }).get()


此时抛出如下的权限不足错误:

就算把代码改成如下形式也依然有这个错误:

    getApp().cloud.database().collection('room').doc('9c1e6a3167178ee4108f089b78b14371').get()


那么,要如何才能读取这个数据呢?

如果可以读取,好像文档并没有讲解如何读取?如果没有办法读取,那就表示微信文档有错误?


最后一次编辑于  10-23
回答关注问题邀请回答
收藏

2 个回答

  • 10-23

    腾讯工作人员回复了,这个问题解决了,有两点要注意。

    首先安全规则中要把字符'改为字符`,如: get(`database.room.${doc._id}`)。

    其次,只能通过指定_id查询一条记录,并且传入的_id就是规则中的 ${doc._id},不支持查询多条记录。

    10-23
    有用
    回复
  • 跨商通
    跨商通
    10-23

    弄不懂权限规则体系的话,就跳过,权限全开,然后回归到熟悉的数据库操作上,在sql脚本上控制,完事。

    10-23
    有用
    回复 2
    • 10-23
      贵公司不考虑数据安全的么。。。
      10-23
      回复
    • 跨商通
      跨商通
      10-23回复
      在sql脚本上控制。或者你举一个不用官方权限就不安全且无法解决的例子?
      10-23
      回复
登录 后发表内容