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

说明 目前云函数内不能调用其他云函数,只支持客户端的使用场景,例如支付宝小程序。

步骤一 定义云函数

关联上对应的后端云服务后,您可以在服务端目录中编写云函数的代码。

  1. 登录小程序云控制台,创建云函数。
    详细操作,请参见新建云函数
    注意 云函数的名称必须和要上传的Node.js代码包名称一致。
    新建云函数
  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格式。
  4. 打包云函数文件。
    确保云函数文件名称和控制台上创建的云函数名称一致且为ZIP格式。

步骤二 部署云函数

编写云函数代码后,您需要将云函数代码上传至控制台发布代码。

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

步骤三 调用云函数

云函数代码发布后,在客户端您可以使用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);