微信小程序云开发数据库不能读写的权限问题

许多人遇到不能更新云数据库字段的问题,这里说明一下

需要更细节的了解权限请阅读
微信官方文档-数据库安全规则

首先需要明白,云数据的角色只有两种,一种是所有用户,一种是创建者,这里的创建者更多指的是记录的创建者而不是集合的创建者

记录指的是
在这里插入图片描述

所以权限的限制就这这两个角色上,接下来使用实验来说明
在这里插入图片描述

<input placeholder="填写要更新的id" bindinput="updateInput"></input>
<input placeholder="填写更新后的名字" bindinput="updateName"></input>
<button bindtap="updateData">更新数据</button>
<button bindtap="getData">查询数据</button>
<input placeholder="输入名字" bindinput="addName"></input>
<input placeholder="输入年龄" bindinput="addAge"></input>
<button bindtap="addData">添加数据</button>
const DB =wx.cloud.database().collection('test');
let updateID,updateName,name,age
Page({
//要更新的ID
  updateInput(event) {
    console.log("要更新的id", event.detail.value);
    updateID = event.detail.value;
  },
  //更新后的名字
  updateName(event) {
    console.log("要更新的name", event.detail.value);
    updateName = event.detail.value;
  },
  //更新数据
  updateData() {
    DB.doc(updateID).update({
      // data 传入需要局部更新的数据
      data: {
        // 表示将 done 字段置为 true
        name: updateName
      },
      success: function (res) {
        console.log("修改成功", res)
      },
      fail:console.error
    })
  },
  //查询数据
  getData() {
    DB.get({
      success(res) {
        console.log("查询成功", res)
      },
      fail:console.error
    })
  },
  //添加Name
  addName(event) {
    name = event.detail.value;
  },
  //添加Age
  addAge(event) {
    age = event.detail.value;
  },

  //添加数据
  addData() {
    DB.add({
      data: {
        name: name,
        age: age
      },
      success(res) {
        console.log("成功", res);
      },
      fail(res) {
        console.log("失败", res);
      }
    })
  }
})

在控制台手动创建test集合并添加一条记录
在这里插入图片描述
由小程序创建一条记录
在这里插入图片描述
在这里插入图片描述

可以看出小程序创建的记录中自动添加了_openid字段,那么这个字段的用处是什么呢

当前集合的权限是仅创建者课读写
在这里插入图片描述
在小程序中点击查询
在这里插入图片描述

可以看到只显示了刚才通过小程序创建的带有_openid字段的记录

在小程序中尝试修改由控制台创建的记录
在这里插入图片描述

可以看到没有记录被更新

在小程序中尝试修改小程序创建的记录
在这里插入图片描述
在这里插入图片描述

可以看到修改成功了

所以应该怎样修改没有_openid字段或者_openid并不是当前用户的记录呢?解决方法是修改权限让所有用户这个角色可读可写

所有用户可读
在这里插入图片描述
再次查询发现两条记录都可以看到
在这里插入图片描述
所有用户可写,但不可读
在这里插入图片描述
再次查询时
在这里插入图片描述
修改控制台创建的记录
在这里插入图片描述
在这里插入图片描述

修改小程序创建的记录
在这里插入图片描述
在这里插入图片描述
所有用户可读可写的自定义权限

{
  "read": true,
  "write": true
}

自定义权限就不讲了,可以看看文章开头的官方文档

如果不想因为权限问题发愁也可以使用云函数或后台的方式来调用数据库
在这里插入图片描述

如果还有问题可以评论区留言

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值