云开发入门第六章,云函数的讲解

2021-02-23 16:36:31 浏览数 (1)

文末有彩蛋

6-1,认识云函数

官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions.html

我们先来看下官方给出的云函数简介

其实通俗来讲,云函数也是运行在服务器上的,只不过和我们传统开发语言相比。微信官方为我们提供的傻瓜式的一键部署。也就是说你只需要把心思花在业务逻辑代码的编写上即可。无需关心写好如何部署,无需关心安全问题,无需关心鉴权问题。

我们下面以获取openid为例,来看看云函数,php,Java的实现对比

  • php获取用户openid

如果用php来获取openid必须经历下面几步

  • 1,去小程序后台拿到appid和appSecret
  • 2,请求微信的对应接口
  • 3,获取数据后进行解码
  • 4,购买服务器,配置服务器
  • 5,购买域名,域名备案,配置https
  • 6,部署php代码到服务器
  • 7,小程序端调用php接口

Java获取openid和上面的php步骤一样,也是需要上面7步。而我们用云函数获取openid呢,就只需要简单的3步就行了,代码量也能显著减少

6-1-1,云函数获取openid

用云函数的话,只需要3步

  • 1,编写云函数
  • 2,一键部署云函数
  • 3,调用云函数

来看下云函数代码,只需要10行代码,即可轻松搞定

6-2,云函数的优势

我们用云函数和上一章的云数据库进行下对比

来看下官方文档是如何描述云函数的

  • 云函数属于管理端,在云函数中运行的代码拥有不受限的数据库读写权限和云文件读写权限。需特别注意,云函数运行环境即是管理端,与云函数中的传入的 openId 对应的微信用户是否是小程序的管理员 / 开发者无关。

6-3,云函数调用演示

官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/functions/Cloud.callFunction.html

6-3-0,初始化云函数的环境

  • 1,创建一个文件夹cloud和pages平行

在这里插入图片描述

  • 2,在project.config.json里面配置云函数所在目录为cloud 在project.config.json里面添加如下配置

然后点击保存,我们的cloud文件夹前面就有一个云朵

就代表我们云函数初始化成功啦。

  • 新一个云函数

在这里插入图片描述

  • 如果只创建一个云函数的时候,会出现下面的问题。

解决方案:只需要在cloud文件夹下新建一个空白文件即可。

6-3-1,云函数获取openid

调用云函数有两种写法

  • 1,传统的success和fail
  • 2,用promise写法then和catch

6-3-2,数据的导入和导出

  • 数据导出,做数据备份

比如导入为json数据如下

  • 数据导入,为了快速的大量的创建一些数据。 为了方便付费用户,我这里提前准备好了108条数据,付费用户直接去下载即可

把下载好的这108条数据的json文件,导入到数据库如下

6-3-3,云函数获取数据

注意:云函数只要有变动,就要重新部署,否则云函数不生效。

遇到了一个问题,如下

出现原因:如果你有两个云开发环境,偶尔会出现上图所示的问题。 解决问题:有两种

  • 1,在云函数里指定你要使用那个云开发环境
  • 2,使用DYNAMIC_CURRENT_ENV常量 (提倡使用这个)

我们这里会和小程序里直接调用数据库的查询进行下对比

6-3-4,云函数修改数据

本地小程序直接调用数据库修改会有问题

  • 只能修改自己创建的数据,别人创建的数据,就没有办法修改了。
  • 如何解决呢?用云函数来修改就可以解决这个问题啦。
  • 1,先创建云函数update0129
  • 2,调用云函数就行修改

6-3-5,云函数删除数据

  • 1,创建一个删除商品的云函数remove0129
  • 2,调用这个云函数进行删除操作

6-3-6,提交数据到云函数

  • 1,创建云函数,并部署
  • 2,调用云函数

6-4,使用云函数常见问题

6-4-1,云函数里面没有初始化环境变量

解决方案如下:

代码片段

代码语言:javascript复制
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV 
})

完整免费视频讲解:

https://www.bilibili.com/video/BV1x54y1s7pk/

0 人点赞