开发者社区> 问答> 正文

云函数怎么使用?

云函数怎么使用?

展开
收起
珍宝珠 2020-02-17 16:38:51 3106 0
1 条回答
写回答
取消 提交回答
  • 阿里云头部开发者运营小二

    云函数(FaaS)是一段运行在云端的、轻量的、无关联的、并且可重用的代码。无需管理服务器,只需编写和上传代码,即可获得对应的数据结果。使用云函数可以使企业和开发者不需要担心服务器或底层运维设施,可以更专注代码和业务本身,也可以使代码进一步解耦,增加其重用性。

    在客户端只需依赖mpserverless-sdk,在应用的上下文中进行简单的鉴权配置,即可调用云函数。

    云函数的入参只有一个ctx对象,该对象可获取调用的云函数时传入的参数,也可获取小程序serverless服务空间的云数据库,云存储等服务。

    例如,我们定义一个云函数,名为hello。代码如下所示:

    //云函数定义在index.js中,此文件为云函数的入口文件 module.exports = ctx => { const args = ctx.args; return { "text": args.hello, }; };云函数支持使用Node.js进行开发。您可将代码提交到云端运行,在客户端使用小程序Serverless提供的API进行调用。您还可以在云函数中直接通过API调用数据存储和文件存储的服务资源。 说明 目前云函数内不能调用其他云函数,只支持客户端的使用场景,例如支付宝小程序。 步骤一 定义云函数

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

    登录小程序云控制台,创建云函数。 详细操作,请参见新建云函数。 注意 云函数的名称必须和要上传的Node.js代码包名称一致。 新建云函数 在小程序的server/functions目录下创建云函数目录。

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

    └── server/ └── functions └── getImageList └── index.js

    编写云函数代码。 以下代码示例展示了如何从数据库images里面查出特定用户上传的图片记录。

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

    说明 云函数的返回值类型仅支持JSON格式。 打包云函数文件。 确保云函数文件名称和控制台上创建的云函数名称一致且为ZIP格式。 步骤二 部署云函数

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

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

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

    2020-02-17 16:49:19
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
小程序 云开发 立即下载
函数计算最佳实践:快速开发一个分布式 Puppeteer 网页截图服务 立即下载
搭建基于 Serverless 的在线转换工具 立即下载