微信小程序雲開發數據庫無法修改他人數據

在微信小程序雲開發中極大地方便了我們免搭服務器,免後臺的功能,官方爲我們提供了儲存和數據庫功能,當然這些功能也是有缺陷的。

今天來記錄一下數據庫權限的問題
在這裏插入圖片描述
官方給我們的數據庫權限在小程序端中有四種權限

  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,大功告成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章