在微信小程序雲開發中極大地方便了我們免搭服務器,免後臺的功能,官方爲我們提供了儲存和數據庫功能,當然這些功能也是有缺陷的。
今天來記錄一下數據庫權限的問題
官方給我們的數據庫權限在小程序端中有四種權限
- 所有用戶可讀,僅創建者科讀寫(用於用戶評論,用戶公開信息等)
- 僅創建者可讀寫(用於個人設置,個人信息等)
- 所有用戶可讀(用於商品信息等)
- 所有用戶不可讀寫(用於後臺流水數據等)
以上這四種情況,我們並不能夠用於所有的場景,比如說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,大功告成