收藏
回答

云开发完全复现数据库安全规则配置文档代码出错?

我是完全复现了数据库安全规则里面的示例的,结果还是出错,问题和我之前提问的是一样的。

我使用了云环境共享功能,不知道和这个是否有关系

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

这是之前的提问

https://developers.weixin.qq.com/community/develop/doc/00004010d54000c9546b43ca556800

示例 1:群聊

集合定义

user

{
  _id: string,
  _openid: string,
  name: string,
}

room

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

message

{
  _id: string,
  room: string, // 房间 id
  sender: string, // 发送者 openid
  content: string, // 消息内容
  time: Date, // 发送时间
  withdrawn: boolean, // 是否已撤回
}

权限规则

user 权限规则

{
  "read": "doc._openid == auth.openid", // 私有读
  "write": "doc._openid == auth.openid", // 仅能修改自己的信息
}

room 权限规则

{
  "read": "auth.openid in get('database.room.${doc._id}').members", // 仅群成员可以读群信息
  // 要求管理房间的写操作不能在前端:
  //  - 原子:建群时需保证room集合的members和各个成员的rooms都写入
  //  - 权限:仅群主能修改群信息
  //  - 权限:仅群成员可以拉新成员进群
  //  - 权限:仅群主可以踢人
  "write": false
}

message 权限规则

{
  // 仅能读取自己所在房间的聊天消息,且不允许读取已撤回的消息
  "read": "auth.openid in get('database.room.${doc.room}').members && doc.withdrawn == false",
  // 只能在云函数写:
  //  - 仅能在自己所在的房间发消息
  //  - 只能修改自己发送的消息
  //  - 不能删除自己发送的消息(只能撤回)
  "create": "auth.openid in get('database.room.${doc.room}').members",
  "update": "auth.openid == doc.sender",
  "delete": false
}

查询 / 监听示例

监听自己所在的某个房间的某个时间点之后的新消息(就是监听已接收的某个消息后的新消息):

wx.cloud.init({
  env: '环境 ID',
})
const db = wx.cloud.database()
const _ = db.command

const watcher = db.collection('message').where({
  room: '房间 id',
  time: _.gt(new Date('2019-09-01 10:00')),
}).watch({
  onChange: snapshot => {
    console.log(`新事件`, snapshot)
  },
  onError: err => {
    console.error(`监听错误`, err)
  }
})


我使用的查询查询语句是

还是这个错误。

最后一次编辑于  2020-12-14
回答关注问题邀请回答
收藏

2 个回答

  • 小舟
    小舟
    2021-05-07

    我也碰到这个问题了,老哥你这问题解决了吗

    2021-05-07
    有用
    回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2020-12-14

    你好,反馈已收到,我们看看,有结果同步。

    2020-12-14
    有用
    回复 1
    • 不吃土豆
      不吃土豆
      2020-12-16
      好没好呀。。
      2020-12-16
      回复
登录 后发表内容
问题标签