首页 > 其他分享 >我的第一个云函数

我的第一个云函数

时间:2025-01-17 10:06:24浏览次数:1  
标签:调用 函数 右键 本地 event 调试 第一个

我的第一个云函数

我们以定义一个将两个数字相加的函数作为我们第一个云函数的示例。

在项目根目录找到 project.config.json 文件,新增 cloudfunctionRoot 字段,指定本地已存在的目录作为云开发的本地根目录

示例:

{
   "cloudfunctionRoot": "cloudfunctions/"
}

project.config.json 的其他配置,详见文档

完成指定之后,云开发根目录的图标会变成 “云开发图标”,云函数根目录下的第一级目录(云函数目录)是与云函数名字相同的,如果对应的线上环境存在该云函数,则我们会用一个特殊的 “云图标” 标明

img

接着,我们在云函数根目录上右键,在右键菜单中,可以选择创建一个新的 Node.js 云函数,我们将该云函数命名为 add。开发者工具在本地创建出云函数目录和入口 index.js 文件,同时在线上环境中创建出对应的云函数。我们可以看到类似如下的一个云函数模板:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

云函数的传入参数有两个,一个是 event 对象,一个是 context 对象。event 指的是触发云函数的事件,当小程序端调用云函数时,event 就是小程序端调用云函数时传入的参数,外加后端自动注入的小程序用户的 openid 和小程序的 appid。context 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。在模板中也默认 requirewx-server-sdk,这是一个帮助我们在云函数中操作数据库、存储以及调用其他云函数的微信提供的库,关于 wx-server-sdk 的使用我们在另一个章节讲述。

我们修改一下模板的返回值:

// ...
exports.main = async (event, context) => {
  // ...
  return {
    sum: event.a + event.b
  }
}

本段代码的意思是将传入的 a 和 b 相加并作为 sum 字段返回给调用端。

在小程序中调用这个云函数前,我们还需要先将该云函数部署到云端。在云函数目录上右键,在右键菜单中,我们可以将云函数整体打包上传并部署到线上环境中。

部署完成后,我们可以在小程序中调用该云函数:

wx.cloud.callFunction({
  // 云函数名称
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 1,
    b: 2,
  },
  success: function(res) {
    console.log(res.result.sum) // 3
  },
  fail: console.error
})

当然,Promise 风格的调用也是支持的:

wx.cloud.callFunction({
  // 云函数名称
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 1,
    b: 2,
  },
})
.then(res => {
  console.log(res.result) // 3
})
.catch(console.error)

目前云函数已支持延迟调用,详细说明参见addDelayedFunctionTask
在正式的开发中,建议先在本地调试云函数通过后,再上传部署云函数进行正式测试,以保证线上发布的稳定性。使用本地调试的方法是:

  1. 编写如上云函数代码
  2. 对云函数目录右键,选择 “启动云函数本地调试”
  3. 此时应该看到本地调试窗口打开,同时该云函数的 tab 也已打开,如果没有,在左侧列表中选择该函数,双击打开 tab
  4. 如果右侧的控制面板中的 “开启本地调试” 没有勾选,勾选上,勾选后会开启对该云函数的本地调试,所有模拟器中的请求会请求到本地调试的云函数实例
  5. 在小程序模拟器中操作,发起对该云函数的调用
  6. 此时云函数本地实例被触发,可以进行断点等调试操作

那么到这里,我们就成功创建了我们的第一个云函数,并在小程序中成功调用!

下一章节,我们介绍云函数和小程序登录态如何无缝结合,以及如何在云函数端获取小程序用户信息(openid 和 appid)。

标签:调用,函数,右键,本地,event,调试,第一个
From: https://www.cnblogs.com/AtlasLapetos/p/18647541

相关文章

  • 云函数
    云函数云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的CPU内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。一个云函......
  • 【机器学习:十七、多分类问题和Softmax函数】
    1.多分类问题1.1多分类问题定义多分类问题是指一个模型需要从多个类别中选择一个类别作为输出的任务。与二分类问题不同,多分类任务中类别的数量n>2......
  • 深入探索:函数栈帧的神秘世界及其背后原理
    文章目录什么是函数栈帧理解函数栈帧的作用函数栈帧的创建和销毁解析什么是栈?相关寄存器和汇编指令函数栈帧的创建和销毁过程准备环境函数栈帧的创建函数栈帧的销毁前言:在C语言中,函数是程序的基本单位,我们通过函数来实现特定的功能。然而,函数如何被调用、返回值如......
  • 生成函数
    生成函数浅讲感觉这是一个非常牛逼的东西,写了点自己的感悟,可能讲得不是很清楚。生成函数的定义就比较牛,将数列\(\{a_i\}\)写成一个函数\(A(x)=\sum{a_ix^i}\)的形式叫做普通生成函数。此处的\(x^i\)没有实际意义,只是一个占位符。对于生成函数来说,绝大数多项式的运算法则......
  • 使用QFuture和QFutureWatcher实现不阻塞界面的Async函数
    简述很多时候,在Qt里面需要运行一个耗时函数的时候,为了避免阻塞界面,需要放入非主线程去执行。实现这样处理的方法有好几种,例如:写一个继承自QThread类,实现run接口;写一个继承自QObject的类,添加槽函数执行任务,创建对象,移入一个QThread中进行调用;写一个QRunnable的子类,创建对象,添......
  • 28. 找出字符串中第一个匹配项的下标
    题目KMP典中典,可惜我不会。卡哥思路里的讲解也似懂非懂,跟着卡哥代码敲了一遍classSolution{public:voidgetNext(int*next,conststring&s){intj=-1;next[0]=j;for(inti=1;i<s.size();++i){whi......
  • C++ 面向对象(构造 & 析构函数)
    二、构造&析构函数2.1构造和析构2.1.1功能构造函数功能构造函数在类实例化对象时用于完成对象成员的初始化,通常包括以下操作:   1.为成员变量分配内存空间   2.初始化成员变量   3.执行类似打开文件、分配资源等额外操作析构函数功能主要作用......
  • 插值函数和插值多项式
    目录插值函数插值多项式插值函数设函数y=f(x)f(x)f(x)在区间......
  • 函数间断点 | 可去间断点 / 第一类间断点 / 第二类间断点 / 狄利克雷函数和黎曼函数示
    注:机翻,未校。BasicDefinitionsandExamples基本定义与示例Definition5:Ifapointofdiscontinuitya∈Ea\inE......
  • 莫比乌斯函数及其反演
    一些定义数论函数定义域为正整数的函数,一般分类如下:积性函数对于\(\forallx,y\inN,gcd(x,y)=1\),若\(f(x\cdoty)=f(x)\cdotf(y)\),则\(f\)是积性函数。完全积性函数对于\(\forallx,y\inN\),若\(f(x\cdoty)=f(x)\cdotf(y)\),则\(f\)是完全积性函数......