评论

云开发,关于数据库权限引发的思考

云开发,关于数据库权限引发的思考

考虑下面集合

如果该集合的权限是仅创建者可读写,那么以下两种写法是否一致

const db = wx.cloud.database()
db.collection('profiles').where({
  _openid: 'xxx' // 填入当前用户 openid
}).count().then(res => {
  console.log(res.total)
})

占位

const db = wx.cloud.database()
db.collection('profiles').count().then(res => {
  console.log(res.total)
})

占位

如果集合权限是仅创建者可读可写,那么上面两个查询语句的结果是否一致?

关于这个问题,我已经有了答案,但是我不能说😄

最后一次编辑于  02-28  
点赞 0
收藏
评论

3 个评论

  • FWAN
    FWAN
    02-29

    可能会不一致吧,文档上说在管理端(控制台和云函数)创建的记录不会有_openid 字段,因为这是属于管理员创建的记录。

    02-29
    赞同 1
    回复 5
    • 何仙姑
      何仙姑
      03-01
      我想表达的应该是小程序端调用的情况,就是用户小程序创建的记录,在查询count的时候要不要在where里面加openid
      03-01
      回复
    • FWAN
      FWAN
      03-01回复何仙姑
      试了下,不加openid,可以查到的所有数据(不区分是否含openid),加openid,只能查到含有该字段的记录。
      03-01
      回复
    • 何仙姑
      何仙姑
      03-01回复FWAN
      服了,我等会转发一篇文章给你,我是看到官方的公众号文章的一篇文章才有这个疑问,能wx聊下吗
      03-01
      回复
    • 何仙姑
      何仙姑
      03-01回复FWAN
      https://mp.weixin.qq.com/s/zFlevR5Sv28d12zCUhG6lQ
      这篇文章了解下
      03-01
      回复
    • FWAN
      FWAN
      03-01回复何仙姑
      有点迷,get不到点。如果是用户注册那个例子,可以这样解释,当权限为   “ 仅创建者可读写 ”   时,查询时会默认给查询条件加上一条 _openid 必须等于用户 openid
      03-01
      回复
  • 陈大星
    陈大星
    02-29

    在小程序端调用的话,是一样的,因为不写openid系统也自动加了。在云函数端调用的话,根据触发云函数的用户,可能不一样。

    02-29
    赞同 1
    回复 1
    • 何仙姑
      何仙姑
      02-29
      openid在新增的时候是自动添加的,但是在查询语句不会自动添加到where里面,这一点还是要区分开来。
      02-29
      回复
  • 陈
    02-28

    ??? 这么皮的吗?

    02-28
    赞同 1
    回复 1
    • 何仙姑
      何仙姑
      03-01
      欢迎切磋
      03-01
      回复
登录 后发表内容