快速入门

如何使用

一般云函数主要会涉及创建和触发两个操作

1.如何创建和编写云函数:

开发者可以登录到知晓云控制台,进入到引擎-云函数界面,知晓云提供了一个在线代码编辑器,你可以在上面编写你的云函数。目前编写云函数的渠道只有这里,后续我们会提供命令行功能上传云函数等渠道。

创建完云函数后为其编写逻辑代码,目前支持的编程语言仅有 Node.js,后续我们也会增加对其它语言的支持。

编写完代码,点击提交,你的第一个云函数就诞生啦。

2.如何触发云函数

写云函数的目的不过是供我们的应用进行调用,这就涉及到了如何触发云函数的问题。知晓云提供了多种方式触发云函数,包括在小程序中使用我们的 JS SDK 进行触发;在知晓云控制台中定义触发器,指定触发类型为云函数;定时任务定时触发等。

下面,我们通过创建和使用一个 helloWorld 云函数,来了解一下如何使用知晓云的云函数吧。

hello world 示例

在控制台创建云函数

进入知晓云控制台,选择一个应用进入,依次点击「 引擎 」、「 云函數 」、「 添加 」。

进入云函数控制台面板

在弹出添加云函数模态框中,选择 Hello world 模板,函数命名为 helloWorld,点击确认,即可完成云函数的创建。

创建 hello world 函数

创建好云函数后,在代码编辑器中,默认会添加以下一段代码,它的作用是当调用该方法后,函数会返回 ‘hello world’。

  1. exports.main = function helloWorld(event, callback) {
  2. callback(null, "hello world")
  3. }

在小程序中触发云函数

云函数创建好后,就可以在你的微信小程序代码中,触发该函数了。在此之前,你得先下载我们的 JS SDK,导入项目并进行初始化,关于这块的内容,可以查看我们的 JS SDK 文档。触发云函数的示例代码如下:

  1. wx.BaaS.invokeFunction('helloWorld').then(res => {
  2. console.log(res.data) // 'hello world'
  3. })

云函数中使用 Node.js SDK

上面只是简单地返回了一个 ‘hello world’ 字符串,现在让我们使用知晓云的数据存储功能,做些更有意义的事吧。

按照上面创建云函数的方法,我们创建一个 getArticles 的函数。然后在数据面板创建一张 article 表,为它添加几条记录,调用我们的云函数 getArticles 获取 article 表中的记录。

修改云函数的代码如下:

  1. exports.main = function getArticles(event, callback) {
  2. let tableID = 212
  3. let Article = new BaaS.TableObject(tableID)
  4. Article.limit(100).find().then(res => {
  5. callback(null, res.data.objects)
  6. }, err => {
  7. callback(err)
  8. })
  9. }

修改小程序中的代码:

  1. wx.BaaS.invokeFunction('getArticles').then(res => {
  2. console.log(res.data) // articles
  3. })

云函数中 event 包含的可用参数

参数说明

参数 类型 描述 示例
data Object 触发云函数的 data,若从 SDK 触发,则为 invokeFunction 中的 params, 若为触发器触发,则为触发触发器的数据行。 {“id”: “SnHzr40rtAufDke2r6FJ7xxE”}
eventType String 触发云函数的类型 SDK
jobId String 云函数任务的唯一标记 ID “a83ec181e20c4d50b83093157c8283a1”
request Object 如果云函数由小程序端触发,此处记录请求用户的信息 见下面 request 示例

request 示例

  1. {
  2. "meta": {
  3. "ip_address": "123.61.205.211",
  4. "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.2 Safari/605.1.15"
  5. },
  6. "user": {
  7. "avatar_url": "http://cdn.ifanr.cn/ifanr/default_avatar.png",
  8. "id": 135570997,
  9. "nickname": "ifanr"
  10. }
  11. }