本來(lái)覺(jué)得弄個(gè)小項(xiàng)目,就不去用小程序的云函數(shù)功能了,直接使用小程序提供的函數(shù)去修改數(shù)據(jù)庫(kù)的瘦馍,但后面發(fā)現(xiàn)用自己的賬號(hào)去修改別人發(fā)布的數(shù)據(jù)時(shí)(比如管理員想要置頂或刪除別人的數(shù)據(jù)時(shí))歼秽,小程序端返回的是操作成功应役,但是我去數(shù)據(jù)庫(kù)里發(fā)現(xiàn)數(shù)據(jù)沒(méi)有變化,原來(lái)是小程序提供的數(shù)據(jù)庫(kù)操作函數(shù)只能操作自己的數(shù)據(jù)(即該條數(shù)據(jù)的openId必須與你當(dāng)前登錄的openId相同)燥筷,后面查閱資料后發(fā)現(xiàn)需要使用云函數(shù)才能修改其他openId的數(shù)據(jù)箩祥,也是很簡(jiǎn)單的。接下來(lái)就是詳細(xì)的做法
首先肆氓,在云函數(shù)里新建一個(gè)云函數(shù)
然后袍祖,在你創(chuàng)建的云函數(shù)里面的index.js文件添加數(shù)據(jù)庫(kù)操作函數(shù)
// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => { //event為等下在調(diào)用時(shí)帶的數(shù)據(jù),不能改
try {
//我這邊用的是更新功能谢揪,也可以改成其他的操作
return await db.collection("test").doc(event.id).update({
data: event.data
})
} catch (e) {
console.error(e)
}
}
接下來(lái)就是最重要的一步蕉陋,也是經(jīng)常被忽略的一步,就是上傳并部署該云函數(shù)(每次修改了云函數(shù)后都要上傳)
接下來(lái)就是在js中使用該云函數(shù)
wx.cloud.callFunction({
name:'你命名的云函數(shù)文件名',
data:{ //這里就是上面提到的event拨扶,你要傳的數(shù)據(jù)都放在這里帶過(guò)去
id:_id,
data:data
},
success:res=>{ //這里面寫成功后的一些操作
}
})
完成凳鬓!測(cè)試了一下,可以修改其他人的數(shù)據(jù)了