一、问题场景 在做图片点赞、查看量的时候,非管理员给非自己上传(创建)的图片点赞,更新数据失败,失败原因是没有修改数据权限 二、问题描述 云数据库中的读写权限是有严格规定的 非管理员非创建者,没办法写入数据(更新数据) 三、详细解决办法 使用云函数更新数据 刚开始还是不怎么了解云函数,只用自动生成的login 来获取openid,并不知道其他用法,看了好久才明白 1、在开发者工具上新建node.js云函数 2、上代码 这是云函数index.js 内容 // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const d 在微信小程序的开发过程中,经常会遇到数据管理的问题,特别是涉及到用户权限控制的场景。本文将详细探讨如何在微信小程序中利用云开发实现云数据库的读写权限管理,以解决非管理员用户无法对非自己创建的数据进行点赞或更新的难题。 一、问题场景 在构建一个包含图片点赞功能的小程序时,可能会遇到这样一个问题:当一个非管理员用户尝试对他人的图片进行点赞时,系统返回错误,提示该用户没有修改数据的权限。这是因为微信小程序的云数据库默认设定严格的读写权限,非创建者或管理员通常不具备修改他人数据的能力。 二、问题描述 云数据库的权限设置旨在保障数据的安全性和完整性。在默认情况下,只有数据的创建者或者具有特定管理权限的账号才能进行写操作,例如更新数据。因此,当非管理员用户试图点赞非自己上传的图片时,由于权限不足,导致点赞失败。 三、详细解决办法 为解决这个问题,可以采用云函数来处理数据更新,以绕过直接在客户端进行写操作的权限限制。云函数在服务器端运行,可以拥有更高的权限,可以处理这些敏感操作。 1. 创建云函数 在微信开发者工具中新建一个Node.js云函数。云函数可以用来执行需要额外权限的操作,如更新数据库中的数据。 2. 编写云函数代码 以下是一个简单的云函数示例(index.js): ```javascript // 引入微信云开发 SDK const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() // 云函数入口函数 exports.main = async (event, context) => { try { // 更新指定id的image集合中的数据 return await db.collection("image").doc(event._id).update({ data: { praise: event.dianza } }) } catch (e) { console.error(e) } } ``` 这个函数接收事件参数,其中包含了待更新数据的_id和点赞数,并尝试更新数据库中对应记录的praise字段。 3. 调用云函数 在小程序端,你可以通过`wx.cloud.callFunction`来调用刚刚创建的云函数: ```javascript wx.cloud.callFunction({ name: '你新建的云函数名字', data: { _id: obj._id, // 当前数据的 id dianza: dianza // 用户的点赞信息 }, success: res => { console.log('更新数据成功') } }) ``` 确保将'你新建的云函数名字'替换为实际的云函数名,同时将`obj._id`和`dianza`替换为实际的值。 4. 上传与部署 完成云函数编写后,需要将其上传至云端并部署。为了确保云函数能够正常运行,建议在本地安装云端依赖,例如运行`npm install –save wx-server-sdk@latest`。 通过以上步骤,微信小程序就可以在云数据库中安全地处理用户的点赞操作,而无需担心权限不足的问题。这种方式不仅解决了权限问题,还提高了系统的安全性,因为敏感操作都在服务器端进行,减少了客户端的直接交互。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![dmg](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/13205410/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 4
- 资源: 943
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)