开始使用

云函数支持使用 Node.js 进行开发。作为开发者,您可将代码提交到云端运行,在客户端使用后端云服务(Basement)提供的 API 进行调用。您还可以在云函数中直接通过 API 调用数据存储和文件存储的服务资源。

搭配支付宝小程序使用云函数,无须配置,可以直接调用支付宝开放平台的海量 OpenAPI 接口。

重要:目前云函数内不能调用其他云函数,所以只有客户端的使用场景,例如支付宝小程序。

定义云函数

关联上对应的后端云服务(Basement)后,您可以在服务端目录中编写云函数的代码。通过以下步骤定义一个云函数:

编写云函数 handler

每一个云函数处理就是一个 handler,为了便于管理,您可以创建 server/handlers 目录来放置所有的云函数文件,每个文件写成一个 handler。

例如,编写一个新的云函数 handler,使用 getImages.js 文件,调用同一个云服务数据存储服务,获取所有图片的数量并返回。

目录结构参考如下:

  1. ├── client/
  2. └── server/
  3. ├── handlers
  4. | ├── getImages.js
  5. | └── getUsers.js
  6. └── serverless.yml

getImages.js 的文件内容如下。从数据库 images 里面查出特定用户上传的图片记录:

  1. module.exports = async (ctx) => {
  2. const images = await ctx.basement.db.collection('images').find({ owner: ctx.args.username });
  3. return { images };
  4. };

配置云函数配置文件

编写的 handler 文件是不能直接提供外部调用的,您需要通过配置 serverless.yml 文件,将代码转化成对外服务的云函数。

接着上述示例,下面是 serverless.yml 配置文件的内容:

  1. functions:
  2. getImageList:
  3. handler: handlers/getImages
  4. getAllUsers:
  5. handler: handlers/getUsers

该配置文件中定义了以下云函数,可以对外提供访问:

  • 获取图片列表 getImageList
  • 获取用户列表 getAllUsers

部署云函数

为支付宝小程序编写的云函数,可以在小程序开发者工具中一键完成部署,将云函数发布到线上环境。如下图所示:

deploy

调用云函数

在客户端,您可以使用 basement.function.invoke 方法调用上述定义的云函数,获取用户上传的图片记录,然后更新页面数据。

  1. basement.function.invoke('getImageList', {
  2. username: 'Vincent',
  3. }).then((res) => {
  4. if (res.success && res.result) {
  5. this.setData({ imageList: res.result.images });
  6. }
  7. }).catch(console.error);

相关链接

原文: https://docs.alipay.com/mini/cloud-service/yy4r5t