微信小程序云开发流程

2,380 阅读5分钟

今天回顾了一下云开发的一些流程,将整个微信小程序云开发的步骤做一个记录。我将以下面这个简单的例子进行演示:

image.png

如上图所示。

  • 1、点击「我的」的tab,点击获取头像昵称,进行登录,并且将我的userInfo和openid缓存到localStorage中,实现只需要登录一次的目的。
  • 2、点击「首页」的tab,点击「+1」按钮,就会往云数据库存储一条分数为1的记录,openid是我自己的日志;点击「-1」按钮,就会往云数据库存储一条分数-1的记录。
  • 3、点击「数据」的tab,就会把openid为我自己的数据全部查询并展示出来。

为了方便大家的理解,我将从5个部分来对整个流程做一个记录:

  • 什么是云开发
  • 初始化云开发
  • 登录功能(云函数的创建)
  • 创建记录(云数据的插入)
  • 查询记录(云数据的查询)

什么是云开发

相当于微信官方给我们免费的搭建一台适配于小程序的服务器,所有相关的环境都预装好了。我们只需要在上面写一些函数,用于对数据做一些增删改查的操作,非常方便。

这样,就可以实现一个前端把整个前后端的事情都完成了,大大提高了人效。

初始化云开发准备工作

我们按照官方文档的顺序一步一步来操作。

进入微信小程序开发文档,进入快速开始模块,按照指示的顺序,做好开发前的准备工作。

1、进入到微信小程序后台,复制AppId。 image.png

2、创建项目,将上面复制的AppId粘贴到自己新增的项目中。这里注意一定要选择「不使用云服务」。如果选择了「使用云服务」的话,会自动产生很多无用的文件,重新删除比较麻烦。而刚开始勾选「不使用云服务」,会初始化一个比较简单的项目,后面需要使用云函数的时候再新增目录即可。

生成的初始化项目如下:

image.png

3、开通云开发的环境。点击下面的云开发,

image.png

新建环境生成一个唯一的id,选择自己喜欢的名字即可,点击保存。

image.png

最后生成的云开发后台大致是这样的:

image.png

4、创建云函数

在pages同级下面,创建一个叫做cloudFuncs的文件夹,作为存储云函数的空间。然后进入「project.config.json」文件中,配置"cloudfunctionRoot": "cloudFuncs/",保存文件。这样,我们就把云函数的配置空间做好了。

image.png

登录功能(云函数的创建)

1、登录页面要实现的功能:当没有登录的时候,展示的是「获取头像昵称」的按钮;等登录了之后,就展示自己的昵称头像和openid,代码如下:

image.png

2、js的逻辑梳理:我们可以在data中定义userInfo和openid的字段,通过getUserInfo方法获取userInfo信息,通过定义云函数「login」方法获取到openid,并且把userInfo和openid都存储到storage中。

我们在云函数中定义login方法,并且「上传并部署:云端安装依赖」,并到云开发的工具中查找云函数是否顺利的上传成功。

image.png

image.png

image.png

接下来就是在「我的页面」中调用云函数。

image.png

这样获取openid的云函数「login」就能正常的使用了,好棒。

创建记录(云数据的插入)

回到上面的目标。

在首页要实现点击「+1」按钮,就会往云数据库存储一条分数为1,openid是我自己的日志;点击「-1」按钮,就会往云数据库存储一条分数-1的日志。

1、首先进入到「云开发」的「数据库」中,创建一个logs的表,点击保存。

image.png

2、然后定义一个「createLogs」的云函数,并且上传并部署。用于将数据存储到logs表中,需要注意的是:我之前写习惯了mongoose的写法,很容易就写成了collections,而小程序中的云数据库用的是collection,这个一定要注意。一些api的具体使用,我就不在这里详细的解释了,到小程序的官方文档中查一下就好了,我直接把代码贴出来。

对了,这里的「cloud.init()」一定要写在「const db = cloud.database()」之前。刚开始因为我的编程习惯问题,想把所有的const都写在一起,但小程序编译之后就报错了,百度查了一下解释说:要等云环境初始化成功后再能获取database,那就按照官方的规矩来吧。

image.png

在页面中使用这个「createLogs」的云函数。

image.png

分别点击一下「+1」和「-1」,我检查一下数据入库的情况:

image.png

完美,两条数据顺利入库。

查询记录(云数据的查询)

就差最后一步吧入库的数据展示的这一步了。

最后定义一个用于获取日志数据的「getLogs」的云函数,并且上传并部署。就是数据库的一些简单的查询语句(根据openid查询),并且将数据返回。

image.png

在业务端调用「getLogs」的云函数。

image.png

因为在数据库存储的是时间戳格式,获取展示的时候写了一个「formatTime」的函数将日期做一个转化。

写到最后

最后还有一个事情大家可能比较容易忘记的事情是:我们每次调整和编写完成云函数之后,都要右键执行一遍「上传并部署:云端安装依赖」,这样才能让我们写的函数变成最新的代码,并在云端生效。