前面记录了云开发数据库的一些增删改查的操作,发现有一些权限问题,这其实涉及到云函数。其实前面操作云开发环境下的数据库有点类似Java后端操作本地3306端口的sql数据库,但是本地数据库自己玩玩就行,其他ip地址的主机获取不到,这时候就需要服务器。
云函数其实就是一种服务器,传统服务器部署需要很多步骤:
1. 花钱购买腾讯云等服务器
2. 在获取Linux服务器上配置Java或者其他语言环境,配置数据库环境
3. 在云服务器官网开放对应端口允许访问
4. 本地编写后端代码,上传部署至服务器
5. 前端编写代码获取服务器运行程序的接口
6. 如果要上线,还需要购买域名,进行域名备案和安全设置
对于一名全栈程序员来说,就要求掌握前后端知识,数据库知识,linux系统指令,如果有多人协作分布式开发,也需要彼此互相沟通编写文档才能使用,这样搭建的服务器虽然性能稳定但是费时费力。这是我自己写的后端获取用户openid返回前端的代码:
这里需要很多行代码,且需要前后端配合完成。
小程序云函数帮我们进行傻瓜式部署,也不要求我们自己进行域名备案和安全设置,比较适合小白,想获取openid,就只需要5行左右代码即可实现。
接下来,就来看看如何使用云函数:
配置云函数只需要两步:
然后需要在cloud文件右击选择创建Node.js云函数,之后我们就可以在js中调用云函数,先获取一下openid:
之后,我们获取一下数据库中的数据,这里是从云函数获取,相当于数据在服务器上,而不是仅仅在我们的本地小程序,当然,首先也要配置一下云环境:
获取数据跟之前数据库一样
这样,在js中调用wx.cloud.callfunction时,res中的数据就是云函数入口函数返回的数据。
还要注意的是,熟悉后端的都清楚,每次代码修改,都需要重新部署到服务器上,可以手动上传再运行,也可以用docker容器进行部署(有点阴间,我没有成功),而云函数也是服务器,每次代码修改都需要重新部署,不过,这里的部署就简单许多,只需要右击cloud文件夹,选择“上传并部署”即可。
前面讲到过,云开发wx.cloud.database()直接修改和删除数据存在一定的权限问题,而使用云函数就不会有这种权限问题,因为使用云函数是获得了超级权限。云函数操作数据库其实跟之前的差不多,主要的区别在于js要先向云函数传递参数,云函数根据参数进行数据库操作,最后js再调用改云函数,所以一次操作就需要创建一个云函数。
这里以修改数据为例,首先创建两个对应的云函数,注意先要用cloud.init()初始化环境:
然后云函数需要从js中获取参数:
接着,云函数调用数据库操作方法,返回结果
修改成功: