简介
JavaScript 代码,和普通的Node.js开发一样,熟悉Node.js的开发者可以直接上手。
如下是将传入的两个参数求和并返回客户端的云函数代码示例:
'use strict';exports.main = async (event, context) => { //event为客户端上传的参数 return { sum:event.a + event.b }}
event对象,一个是context对象。event指的是触发云函数的事件,当客户端调用云函数时,event就是客户端调用云函数时传入的参数。context 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。uniCloud会自动将客户端的操作系统(os)、运行平台(platform)、应用信息(appid)等注入context中,开发者可通过context获取每次调用的上下文,如下是一个示例:
'use strict';exports.main = async (event, context) => { //event为客户端上传的参数 ... //context中可获取客户端调用的上下文 let os = context.OS //客户端操作系统,返回值:android、ios 等 let platform = context.PLATFORM //运行平台,返回值为 mp-weixin、app-plus等 let appid = context.APPID // manifest.json中配置的appid ... //其它业务代码}
访问数据库
规范
访问HTTP服务
uniCloud提供了uniCloud.httpclient供开发者使用。无需额外依赖,就可以请求任何 HTTP 和 HTTPS 协议的 Web 服务。uniCloud.httpclient返回的是一个urllib实例。
uniCloud.httpclient.request(URL,requestOptions)
requestOptions参数说明
示例代码
const res = await uniCloud.httpclient.request(apiUrl, { method: 'POST', data: { test: 'testValue' }, dataType: 'json' })console.log(res)
使用npm
Node.js,因此我们可以使用 npm 安装第三方依赖。
注意:鉴于阿里云的限制,目前仅支持全量上传云函数(整个 node_modules文件夹全部上传),因此提醒大家,精简依赖,否则可能会每次上传时间很慢,影响开发体验。
Tips:
-
客户端调用云函数
uniCloud.callFunction调用云函数,callFunction定义如下:
请求参数
响应参数
示例代码
// promise方式uniCloud.callFunction({ name: 'test', data: { a: 1 } }) .then(res => {});// callback方式uniCloud.callFunction({ name: 'test', data: { a: 1 }, success(){}, fail(){}, complete(){}});
目前仅支持客户端调用云函数,即将支持云函数调用云函数。
注意事项
Node.js应用很大的区别。
Node.js开发中将部分信息存储本地硬盘或内存的方案就不再适合,建议通过云数据库或云存储的方案替代。
另一方面,鉴于云函数的弹性调配机制,为提高运行性能,部分云厂商在一定时间周期内会复用相同的云函数实例,此时为避免数据污染,建议使用无状态的风格编写函数代码。
count作为全局变量,当多次调用该云函数时,可能会出现变量累加的情况(实例未复用时,每次返回0,若实例被复用,则可能返回1、2、3等各种意外情况)
云函数中使用的时区是
let count = 0;module.exports = async (event) => { return count++ //此示例为错误示例 //云函数实例未复用时,每次返回0 //若实例被复用,则可能返回1、2、3等各种意外情况}
云函数中调用云函数
用法同客户端调用云函数,不支持callback形式
请求参数
响应参数
示例代码
let callFunctionResult = await uniCloud.callFunction({ name: "test", data: { a: 1 }})
在 GitHub 上编辑此页面!
