如果在小程序前端直接操控云数据库的话,只有创建者和管理员才能对云数据库进行读写,其他人则只能读,为了解决这个问题,可以使用云函数:
// runDB云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
const _ = db.command
// 云函数入口函数
exports.main = async (event, context) => {
const targetDB = db.collection(event.db)
try {
console.log(event);
if (event.type == "insert") {
return await targetDB.add({
data: event.data,
success:res=>{
console.log("添加纪录成功",res);
},
fail:res=>{
console.log("添加纪录失败", res);
}
})
}
if (event.type == "update") {
return await targetDB.doc(event.indexKey).update({
data: event.data
})
}
if (event.type == "delete") {
return await targetDB.doc(event.indexKey).remove()
}
if (event.type == "get") {
return await targetDB.where(event.condition).get()
}
} catch (e) {
console.error(e)
}
}
使用:
wx.cloud.callFunction({
name: 'runDB',
data: {
type: "insert", //指定操作是insert
db: "table", //指定操作的数据表
data: { //指定insert的数据
name:"张三",
age:18
}
},
success: res => {
console.log('[云函数] [insertDB] 已增加信息' , res)
},
fail: err => {
console.error('[云函数] [insertDB] 增加失败', err)
}
})