一、問題場景
在做圖片點贊、查看量的時候,非管理員給非自己上傳(創建)的圖片點贊,更新數據失敗,失敗原因是沒有修改數據權限
二、問題描述
雲數據庫中的讀寫權限是有嚴格規定的
非管理員非創建者,沒辦法寫入數據(更新數據)
三、詳細解決辦法
使用雲函數更新數據
剛開始還是不怎麼了解雲函數,只用自動生成的login 來獲取openid,並不知道其他用法,看了好久才明白
1、在開發者工具上新建node.js雲函數
2、上代碼
這是雲函數index.js 內容
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database();
// 雲函數入口函數
exports.main = async (event, context) => {
try{
return await db.collection("image").doc(event._id).update({
data:{
praise: event.dianza
}
})
}catch(e){
console.error(e)
}
}
這是調用雲函數js
wx.cloud.callFunction({
name: '你新建的雲函數名字',
data:{
_id: obj._id,
dianza: dianza
},
success: res => {
console.log('更新數據成功')
}
})
obj._id 就是當前數據的 id
我的點贊邏輯是把當前用戶openid 添加到dianza數組中
3、上傳並部署(最好安裝雲端依賴)
安裝本地依賴是在當前雲函數的文件夾下運行 npm install --save wx-server-sdk@latest