前言
刚刚接触微信小程序,往数据库里面新增记录和查询记录都很简单,但是做到数据库内容更新的时候就遇到了很棘手的问题。
更新后数据库没反应?
困扰了我一月有余的问题,从让我一开始就没看懂的openID到后来的云函数,感觉学的那点Web基础知识完全不够用。不过还好,在我软磨硬泡的功夫下,今晚终于学会了云函数的写法和数据的更新操作。
利用云函数对数据库进行Update
- 建立一个新的云函数,取名叫做updateInfo
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("user").doc(event._id).update({
data: {
nickname: event.nickname
}
})
} catch (e) {
console.error(e)
}
}
云函数是有固定模版的,如果你不熟悉,你可以新建一个云函数,打开一看,其实里面已经写好模版了,我们要做的就是更改一下main就行了。
3.放好需要的参数
我一直不明白openID怎么用,但是我相信我软磨硬泡的功夫还是会搞懂的,暂且放一放。
在云开发数据库里面,开发者不用设置主键,系统会自动分配一个_id作为记录的主键。我们如果想要修改数据库里面的一条记录,就先查询数据库,获得_id,放到doc()里面。db.collection()里面放好你要使用的数据库的名字,我的叫做user,
data: {
nickname: event.nickname
}
这里面放你要修改的数据,相当于覆盖原来的数据,左边的nickname是数据库里面字段,右边的是我们在前端准备好的纸。
4.上传云函数
点击上传并部署:云端安装依赖和上传并部署:所有文件。
系统会自动部署好所有的云函数。
使用云函数
wx.cloud.callFunction({
name: 'updateInfo',
data: {
_id: id,
nickname:nickname1
},
success: res => {
console.log('更新数据成功')
console.log(nickname1)
}
})
一般来说我们都是在前端页面的文本框里面输入值,点击按钮提交修改。
那么按钮上面可以设置js事件。
就像普通的事件触发一样,取个函数名,在函数里面把上述代码放进去就行了,会自动调用的,很方便。
小结
因为微信云开发控制台的数据库对于读写的权限比较低,但是只能由创建者做一些别的输入,所以不方便。云函数的存在让权限在保持较高的水准的同时,也方便了用户。