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

说明 您可以通过ctx.mpserverless.function.invoke调用其他云函数,详细说明请参见invoke

步骤一:创建云函数

  1. 登录小程序云控制台
  2. 在左侧导航栏,选择小程序Serverless > 云函数
  3. 如果您尚未开通函数计算,单击前往开通,然后选择服务协议并单击确认开通
  4. 返回云函数页面,在页面右上角选择一个服务空间。
  5. 单击新建云函数
  6. 输入函数名称。
    函数名称长度在1-30个字符间,只能包含字母、数字、下划线和中划线,不能以数字、中划线开头。
    注意 云函数的名称必须和要上传的Node.js代码包名称一致。
  7. 选择运行环境。目前支持Node.js8。
  8. 输入描述。
  9. 单击确定
    新建云函数

步骤二:定义云函数

  1. 在支付宝小程序开发工具中关联对应的后端云服务。
  2. 在小程序的server/functions目录下创建云函数目录。

    其中index.js是云函数getImageList的入口文件。

    └── server/
        └── functions
               └── getImageList
                       └── index.js
  3. 编写云函数代码。
    以下代码示例展示了如何从数据库images里面查出特定用户上传的图片记录。
    module.exports = async (ctx) => {
      const images = await ctx.mpserverless.db.collection('images').find({ owner: ctx.args.username });
      return { images };
    };
    说明 云函数的返回值类型仅支持JSON格式。

步骤三:部署云函数

  1. 登录小程序云控制台
  2. 在左侧导航栏,选择小程序Serverless > 云函数
  3. 单击已创建的函数名称链接。
  4. 发布管理页签,单击上传js包更新js包,然后选择要上传的代码包。
    说明 上传的代码包必须满足以下要求:
    • 代码包的名称必须和在控制台上创建的函数名称一致。
    • 代码包必须是.zip文件。
    • 上传的代码包必须包含index.js文件。
  5. 上传成功后,单击代码部署
    代码部署

步骤四:调用云函数

云函数代码发布后,在客户端您可以使用mpserverless.function.invoke方法调用上述定义的云函数。

以下代码示例展示了如何获取用户上传的图片记录,然后更新页面数据。

// 引入MPServerless模块
const MPServerless = require('@alicloud/mpserverless-sdk');  
// 初始化MPServerless对象
const mpServerless = new MPServerless({  
  uploadFile: my.uploadFile,
  request: my.request,
  getAuthCode: my.getAuthCode,
}, {
  appId: '1234456789', // 小程序应用标识
  spaceId: 'db4dd657-7041-470a-90xxxxx', // 服务空间标识
  clientSecret: '6c3c86xxxx6', // 服务空间 secret key
  endpoint: 'https://api.bspapp.com', // 服务空间地址,从小程序 serverless 控制台处获得
});
// 调用云函数getImageList
mpServerless.function.invoke('getImageList', {     
  username: 'Vincent',
}).then((res) => {
  if (res.success && res.result) {
    this.setData({ imageList: res.result.images });
  }
}).catch(console.error);

步骤五:查看日志

  1. 登录小程序云控制台
  2. 在左侧导航栏,选择小程序Serverless > 云函数
  3. 单击已创建的函数名称链接。
  4. 单击日志
  5. 根据执行时间、状态和Request ID等信息过滤您要查看的日志。