uniCloud随笔
官网:https://uniapp.dcloud.io/uniCloud/README
uniCloud是DCloud在阿里云和腾讯云的serverless服务上封装而成的。
它包含IaaS层(由阿里云和腾讯云提供硬件和网络)和PaaS层(由DCloud提供开发环境)。
开发者可以自主选择uniCloud的硬件和网络资源的供应商,在阿里云版和腾讯云版之间切换。
开户和付费虽然通过DCloud渠道,但实际上开发者自动在云厂商处建立了账户和充值了余额。DCloud只获取云服务厂商的返佣。
开发时虽使用DCloud的工具,但应用上线时,手机端是直连阿里云或腾讯云的serverless,不经由DCloud的服务器。
第一步:创建uniapp项目

第二步:关联云空间

第三步:创建云函数


'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => { //event为客户端上传的参数 const collection = db.collection('unicloud-test') // 获取表'unicloud-test'的集合对象 const res = await collection.limit(10).get() // 获取表中的10条数据,结果为json格式 return res // 返回json给客户端
};
第四步:运行云函数
- 上传部署云函数:将云函数部署到uniCloud服务空间,不会运行。(快捷键Ctrl+u)
- 上传并运行云函数:先上传云函数,并在云端立即执行该云函数。在部署后同时运行,并打印日志出来。有延时,调试时不如本地运行云函数快捷。
- 本地运行云函数:在HBuilderX自带的node环境中运行选中的云函数。云函数连接的数据库和云存储,仍然在云端。(快捷键Ctrl+u)(从HBuilderX 2.8.1起支持)
- 客户端连接本地云函数:开启一个uniCloud本地服务,运行前端项目时在HBuilderX控制台可切换访问云端云函数还是本地云函数。(从HBuilderX 3.0.0起支持)

第五步:调用云函数
时区问题
uniCloud云端的云函数使用的时区是utc+0,本地运行时使用的是本机时间,中国一般是+8。在使用“时间戳”时两者没有差异,但如果要获取年、月、日、小时要注意时区的差异。
以下方式可以获取指定时区的年、月、日、小时,可以参考一下

配置运行参数
手机端调用云函数
test 函数
'use strict';
exports.main = async (event,conrext) => { console.log("event:",event) //const hour = getOffsetDate(8).getHours() //返回数据给客户端 return event
};
promise方式
callback方式
uniCloud.callFunction({
name: 'test', data: { a: 1 }
}) .then(res => {
console.log(JSON.stringify(res))
});
uniCloud.callFunction({
name: 'test', data: { a: 1 },
success(){},
fail(){},
complete(){}
});