前言

刚刚接触微信小程序,往数据库里面新增记录和查询记录都很简单,但是做到数据库内容更新的时候就遇到了很棘手的问题。

更新后数据库没反应?

困扰了我一月有余的问题,从让我一开始就没看懂的openID到后来的云函数,感觉学的那点Web基础知识完全不够用。不过还好,在我软磨硬泡的功夫下,今晚终于学会了云函数的写法和数据的更新操作。

利用云函数对数据库进行Update

  1. 建立一个新的云函数,取名叫做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事件。

就像普通的事件触发一样,取个函数名,在函数里面把上述代码放进去就行了,会自动调用的,很方便。

小结

因为微信云开发控制台的数据库对于读写的权限比较低,但是只能由创建者做一些别的输入,所以不方便。云函数的存在让权限在保持较高的水准的同时,也方便了用户。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐