微信小程序云开发数据库无法修改他人数据

在微信小程序云开发中极大地方便了我们免搭服务器,免后台的功能,官方为我们提供了储存和数据库功能,当然这些功能也是有缺陷的。

今天来记录一下数据库权限的问题
在这里插入图片描述
官方给我们的数据库权限在小程序端中有四种权限

  1. 所有用户可读,仅创建者科读写(用于用户评论,用户公开信息等)
  2. 仅创建者可读写(用于个人设置,个人信息等)
  3. 所有用户可读(用于商品信息等)
  4. 所有用户不可读写(用于后台流水数据等)

以上这四种情况,我们并不能够用于所有的场景,比如说A用户向B用户赠送礼物,A用户礼物减少,B用户礼物增加,在这种情况下,既要修改A用户的数据,又要修改B用户的数据,A用户我们可以修改,但是B用户无法应为权限限制,我们无法修改,很显然以上四种权限不满足当前需求,再次情况下我们该怎么办呢?

在阅读了官方文档后,我们前面提到数据库的权限是在小程序端,我们可以通过云函数来解决。

创建云函数

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

const db = cloud.database()
const _ = db.command

// 云函数入口函数
exports.main = async (event, context) => {
  return await db.collection('集合名').doc(event.id)
  .update({
    data: {
      // B 用户自增一
      evaluate: _.inc(1)
    }
  })
}

创建云函数还需要安装依赖项

在新建的云函数,右击终端打开->cmd,安装依赖
npm install --production
依赖安装成功之后,文件里面会出现package-lock.json文件。

安装完成后上传并部署云函数就完成了云函数的创建

调用云函数

wx.cloud.callFunction({
 name: 'update',
  data: {
    id: 数据集合id
  },
  success: res => {
    console.log(res)
    wx.showToast({
      title: '赠送成功',
    })
  },
  fail: err => {
    wx.showToast({
      icon: 'none',
      title: '赠送失败',
    })
    console.error('[云函数] [sum] 调用失败:', err)
  }
})

ok,大功告成

发布了25 篇原创文章 · 获赞 20 · 访问量 4942

猜你喜欢

转载自blog.csdn.net/qq_39157944/article/details/104426300