云函数入口:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: 'cloud1-6gxun1p3f1eef5e5',
traceUser: true
})
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
try {
return await db.collection("MY_BOOK").doc(event.item).update({
data : {
BOOKSTATE : event.readingstate , //这里前面的BOOKSTATE,是数据库中的字段,event.后面的readingstate,是调用时,构造data要提供的字段;在云端测试时,这里也要写成readingstate
REMARK : event.readremark //同上
}
})
} catch (e) {
//TODO handle the exception
console.error(e)
}
}
上述云函数已经部署,在云端测试,输入id和readingstate ,readremark ,可以正确的更改数据库内容;
但是,如果在按钮中,采用如下函数调用,则无法更改:
updateBook() {
var db = wx.cloud.database()
db.collection("MY_BOOK").where({BOOKNAME: '红楼梦'}).get({
//先查找,目的是获取_id来定位数据记录
success : res => {
wx.callFunction({
name : 'update_book' , //需要调用的云函数名称
data : {
item : res.data[0]._id , //将查找的记录id传给云函数,更新这条记录
readingstate : '刚刚开始读',
readremark : '红楼梦是曹雪芹写的清朝的名著'
} ,
success : res_del => {
//删除成功后提示已删除
wx.showToast({
title : '已更新' ,
icon : 'none'
})
}
})
}
})
console.log('Button updateBook clicked!');
}
可以检查一下数据库权限
https://developers.weixin.qq.com/miniprogram/dev/wxcloudservice/wxcloud/guide/database/legacy-permission.html