在微信小程序云开发中极大地方便了我们免搭服务器,免后台的功能,官方为我们提供了储存和数据库功能,当然这些功能也是有缺陷的。
今天来记录一下数据库权限的问题
官方给我们的数据库权限在小程序端中有四种权限
- 所有用户可读,仅创建者科读写(用于用户评论,用户公开信息等)
- 仅创建者可读写(用于个人设置,个人信息等)
- 所有用户可读(用于商品信息等)
- 所有用户不可读写(用于后台流水数据等)
以上这四种情况,我们并不能够用于所有的场景,比如说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,大功告成