快速入门

如何使用

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

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

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

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

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

2.如何触发云函数

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

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

hello world 示例

在控制台创建云函数

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

进入云函数控制台面板进入云函数控制台面板

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

创建 hello world 函数创建 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 包含的可用参数

参数说明

参数类型描述示例
dataObject触发云函数的 data,若从 SDK 触发,则为 invokeFunction 中的 params, 若为触发器触发,则为触发触发器的数据行。{"id": "SnHzr40rtAufDke2r6FJ7xxE"}
eventTypeString触发云函数的类型SDK
jobIdString云函数任务的唯一标记 ID"a83ec181e20c4d50b83093157c8283a1"
requestObject如果云函数由小程序端触发,此处记录请求用户的信息见下面 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. }