创建uniCloud项目

  • HBuilderX 2.5.8+ 新建项目,选择uni-app项目,并勾选启用uniCloud -
  • Hello uniCloud项目模板,演示了各种云函数的使用。 uniCloud云开发环境创建成功后,项目下会有一个带有云图标的特殊目录,名为“cloudfunctions”。

    创建和绑定服务空间

    项目环境建好后,需要为这个项目选择一个服务空间。如果开发者账户没有实名认证,首先需要实名认证(这是法定要求,也是阿里云、腾讯云等云服务商的要求)。 一个开发者可以拥有多个服务空间,每个服务空间都是一个独立的serverless云环境,不同服务空间之间的云函数、数据库、存储都是隔离的。 服务空间和手机端项目是多对多绑定关系。同账号下,一个项目可以关联到多个服务空间。一个服务空间也可以被多个项目访问。
  • cloudfunctions右键菜单创建服务空间,会打开web控制台https://unicloud.dcloud.net.cn 进行创建
  • cloudfunctions点右键,菜单中点击选择云服务空间,绑定你之前创建的服务空间。 说明
  • dev.dcloud.net.cn设置协作者(选择应用->设置项目成员),实现多人共同使用一个云服务空间。(需 HBuilderX 2.5.9+)
  • https://uniapp.dcloud.io/uniCloud/init

    创建云函数

    uniCloud项目创建并绑定服务空间后,开发者可以在cloudfunctions目录右键创建云函数。 创建后会以云函数名称为名生成一个特殊目录,该目录下自动生成index.js,是该云函数的入口文件,不可改名。如果该云函数还需要引入其他js,可在index.js入口文件中引用。 注意
  • -

    编写云函数

    hello uniCloud模板体验。 HBuilderX为uniCloud开发提供了良好的语法提示和转到定义支持,对于代码中的API,选中并按下F1,也可以直接查看相应的文档。 如下为一个云函数示例
    1. '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给客户端};

    运行和调试云函数

    编写云函数后,在项目管理器里右键点击该云函数的目录,在弹出菜单中可选择“上传部署云函数”、“上传并运行测试云函数”。如下图所示: 前者仅完成部署,后者会在部署后同时运行,并打印日志出来。 Ctrl+r运行快捷键,或点工具栏的运行,还会直接看到上传并运行云函数的快捷指令。Ctrl+r然后回车或选0,即可高效的在控制台看到运行结果和日志输出。 console.log看日志。

    手机端调用云函数

    uniCloud.callFunction方法调用云函数。详见callFunction文档 test的云函数,并发送了data的json数据作为上行参数。
    1. // promise方式uniCloud.callFunction({ name: 'test', data: { a: 1 } }) .then(res => {});// callback方式uniCloud.callFunction({ name: 'test', data: { a: 1 }, success(){}, fail(){}, complete(){}});

    手机端看日志

    console.logApp端真机调试输出云函数日志,如下图所示 所执行云函数代码
    1. 'use strict';exports.main = async (event, context) => { console.log('------------'); console.log('云函数日志输出'); console.log('------------'); return { action: 'log demo' }};
    日志输出
  • - 目前uniCloud的web控制台还不能查看运行日志,后续会提供此功能。

    小程序中使用uniCloud

    各家小程序平台,均要求在小程序管理后台配置小程序应用的联网服务器域名,否则无法联网。 使用uniCloud后,开发者将不再需要自己购买、备案域名,直接将uniCloud的域名填写在小程序管理后台即可。 根据下表,在小程序管理后台设置request合法域名、uploadFile合法域名(如没有上传文件业务,可不设置)。下表的域名均为阿里云或腾讯云自有域名,并非DCloud所属域名。 小程序开发工具的真机预览功能,必须添加上述域名白名单,否则无法调用云函数。模拟器的PC端预览、真机调试不受此影响。

    H5中使用uniCloud

    H5前端js访问云函数,涉及跨域问题,导致前端js无法连接云函数服务器。处理方式如下:。
  • 运行到H5端时,使用HBuilderX内置浏览器,可以忽略跨域问题(mac版需2.5.10+)。
  • cloudfunctions目录右键可打开uniCloud后台) uniCloud后台配置安全域名:
  • -
  • https://ask.dcloud.net.cn/article/35267。要跨域的地址,详见上述文档中小程序配置安全域名章节。 H5前端页面部署问题 阿里云Serverless暂未支持H5前端页面部署,需开发者自行准备web服务器,在HBuilderX中点发行菜单,生成H5,将生成的前端文件部署在Nginx等web服务器下。 然后自行注册或使用已有域名,在域名服务商处处理好域名的解析,指向你的Nginx等服务器ip。 最后将该域名通过uniCloud后台配置为安全域名,即可在浏览器中访问。 m3w.cn二级域名申请 hellounicloud.m3w.cn 。此时请使用你注册DCloud账户的邮箱向service@dcloud.io发邮件申请,提供你的appid、计划使用的二级域名名称、解析的ip地址、应用的使用用途。 如果不发布H5,使用uniCloud不需要自己申请或准备域名。App和小程序里直接调用云函数即可。

    使用db_init.json初始化项目数据库

    HBuilderX 2.5.11uniCloud提供了db_init.json来方便开发者快速进行数据库的初始化操作。 使用说明
  • cloudfucntions目录右键即可创建db_init.json
  • db_init.json上右键初始化数据库。 db_init.json形式如下
    1. { "collection_test": { // 集合(表名) "data": [ // 数据 { "_id": "da51bd8c5e37ac14099ea43a2505a1a5", "name": "tom" } ], "index": [{ // 索引 "IndexName": "index_a", // 索引名称 "MgoKeySchema": { // 索引规则 "MgoIndexKeys": [{ "Name": "index", // 索引字段 "Direction": "1" // 索引方向,1:ASC-升序,-1:DESC-降序 }], "MgoIsUnique": false // 索引是否唯一 } }] }}
    Bug&Tips
  • http://unicloud.dcloud.net.cn,在HX中对云函数目录点右键,或者在帮助菜单中,均有入口链接。

在 GitHub 上编辑此页面!