接上篇:
https://developer.aliyun.com/article/1224123?spm=a2c6h.13148508.setting.24.4f394f0em1x0Jq
三、 实战:业务逻辑实现
接下来,我们进行实际的代码设计环节。
以登录及注册行为为例,上图展示了用户注册及登陆云函数的相关代码。对于登录的逻辑,我们在云数据库的user表中,查找userId,并返回携带数据库中的id信息。通过投影操作,进行过滤。查询成功后,如果有效文档affectedDocs大于零,则说明用户已经存在,此次请求为登录逻辑,我们将用户信息作为result返回。否则,此次请求为注册逻辑,我们在库中插入一条新注册的用户,以空字符串作为新注册状态。插入成功后,小程序会直接返回该信息。如果插入失败,则返回异常对象。
对于疫苗预约的代码设计,除了标准的数据库增删改成行为,这个环节还会存在很多异常行为,比如用户不存在、疫苗不存在、接种点不存在、重复预约和疫苗数量不足等等。我们需要充分考虑各个场景的边界,进行异常行为的捕获和处理。相关代码,如上图所示。
四、 实战:集成测试
最后,我们来进行小程序端侧的云函数集成。
首先我们集成注册登录的云函数login。由刚刚我们设计的代码逻辑可知,当userName和userAvatar返回空字由串时,代表了一次注册请求行为,我们主动授权支付宝小程序,获得支付宝的昵称和头像。值的注意的是,在调用授权行为时,小程序会唤起授权行为弹窗,用户点击允许,我们才可以获得支付宝的头像和昵称信息。
然后,我们调用updateUser云函数接口,根据授权获取到的用户昵称和头像更新数据库信息。
最后,本地缓存登录用户信息,以便在其他小程序页面中使用。
接下来我们简单集成一下疫苗预约的场景。
如上图所示,我们给按钮绑定appointment事件用于云函数调用触发,并透过小程序的data属性来完成云函数所需参数的传递。然后,在appointment事件的处理函数中通过调用bookAppointment,并传递本地缓存的userId以及事件传入的vaccineId和siteId参数。最后,分别对预约成功和预约失败的场景编写弹窗逻辑来提示和告知使用者本次行为的结果。
五、 课程总结
本节课程,主要学习了云函数开发和云函数实战。在云函数开发方面,介绍了本地开发、打包部署、控制台调试和端侧集成。在云函数实战方面,我们以登录注册和疫苗预约两个典型场景演示了业务逻辑设计,业务逻辑实现以及集成测试的基本流程。