代码工程地址:
Cloud Foundation Kit(云开发服务)
介绍
本示例展示了使用CloudFoundationKit提供的云函数、云存储、云数据库能力的方法,包含:
1.云函数的call函数调用功能。
2.云存储的上传下载删除功能。
3.云数据库的增删改查功能。
需要使用@kit.CloudFoundationKit。
效果预览
云函数页面 | 云存储页面 | 云数据库页面 |
---|---|---|
| | |
Sample工程的配置与使用
在DevEco中配置Sample工程的步骤如下
-
打开Sample应用,使用AppGallery Connect配置的应用包名替换app.json5文件中的bundleName属性值。
-
使用手动签名创建一个签名,替换工程中build-profile.json5文件中的signingConfigs的内容,或者使用自动签名功能,具体可参考 应用/服务签名 。
-
在AppGallery Connect平台开通云数据库、云函数、云存储服务。
-
云函数需要创建两个名称分别为sort和sort-id的函数,函数的内容具体可以参考工程目录下functionJSDemo文件夹中的
sort_$latest
和sort-id_$latest
。 -
云数据库中需要配置一个名称为QuickStartDemo的存储区,创建一个名称为PicInfo的存储对象,对象属性可参考
然后将对象导出为json文件,名称修改为schema.json,并替换工程resources目录下rawfile文件夹中的schema.json文件,导出文件操作可参考新增对象。
Sample工程使用说明
- 运行该Sample应用,依次点击"云函数"、"云存储"和"云数据库"按钮,会进入相应的功能展示页面。
- 云函数页面展示了调用sort函数返回字符串price、调用sort-id函数返回字符串id,且分别以Promise方式和Callback方式返回。
- 云存储页面展示了上传文件、下载文件、删除文件、获取文件地址、列出存储信息、获取和设置元数据的功能,点击相应按钮执行功能,下方的message区域会打印出相关信息。
- 云数据库页面展示了插入数据、按照各种条件查询数据、对查询数据数字属性的算术计算、更新数据、删除数据的功能,点击相应按钮执行功能,下方的message区域会打印出相关信息。
工程目录
├─entry/src/main/ets // 代码区
│ ├─entryability
│ │ └─EntryAbility.ets // 程序入口类
│ ├─pages // 存放页面文件目录
│ │ └─CloudDatabasePage.ets // 云数据库页面
│ │ └─FunctionPage.ets // 云函数页面
│ │ └─Index.ets // 入口类文件
│ │ └─StoragePage.ets // 云存储页面
│ │─PicInfo.ets // 云数据库对象
具体实现
云函数:调用cloudFunction.call方法传入sort 和sort-id,获取一个string类型的price和id,参考FunctionPage.ets。
- 使用cloudFunction.call({name: 'sort'}) 以Promise方式返回一个FunctionResult对象,解析FunctionResult,最终用key sort来获取想要的值‘price’。
- 使用cloudFunction.call({name: 'sort-id'}) 以Callback方式返回一个FunctionResult对象,解析FunctionResult,最终用key sort-id来获取想要的值‘id’。
云存储:调用相关方法实现文件上传、下载等功能,参考StoragePage.ets。
-
上传文件API , 使用picker.PhotoViewPicker()选择一张图片,将选中文件copy至cache目录下,使用云存储API上传文件,cloudStorage.bucket().uploadFile(getContext(this), {localPath: cacheFile, cloudPath: UI.uploadFileName, mode:request.agent.Mode.BACKGROUND}),日志会打印在屏幕下方。
-
下载文件API , 使用cloudStorage.bucket().downloadFile(getContext(this),{localPath:
./${Date.now()}_
+UI.uploadFileName,cloudPath:UI.uploadFileName})接口下载文件,日志会打印在屏幕下方。 -
删除文件方法,使用bucket的deleteFile接口传入图片名称。
let bucket: cloudStorage.StorageBucket = cloudStorage.bucket();
bucket.deleteFile(UI.uploadFileName);
日志会打印在屏幕下方。
-
获取文件的URL, 使用bucket的getDownloadURL接口传入图片名称。
let bucket: cloudStorage.StorageBucket =cloudStorage.bucket();
bucket.getDownloadURL(UI.uploadFileName);
日志会打印在屏幕下方。
-
获取文件列表, 使用bucket.list('')方法返回文件列表,日志会打印在屏幕下方。
-
获取元数据,使用bucket.getMetadata(UI.uploadFileName)方法传入文件名,日志会打印在屏幕下方。
-
设置元数据,使用bucket.setMetadata(UI.uploadFileName, {customMetadata: { key1: "value1", key2: "value2" }})方法传入文件名,自定义元数据名称,日志会打印在屏幕下方。
云数据库:调用相关接口进行数据增删改查,参考CloudDatabasePage.ets。
-
插入数据,首先利用PicInfo创建一个需要添加的对象pic, 调用方法databaseZone.upsert(pic)插入数据,日志会打印在屏幕下方。
-
查询所有数据,首先创建一个查询条件 let condition = new cloudDatabase.DatabaseQuery(PicInfo),然后调用databaseZone.query(condition)查询数据,查询到的数据属性日志会打印在屏幕下方。按照各种条件查询,比如查询picName等于‘左传’的数据,设置condition的查询条件condition.equalTo('picName','左传') ,然后执行databaseZone.query(condition)查询数据,其他条件就不赘述,详细参考代码示例。
-
查询数据后对数据的number类型的属性进行算数计算,首先创建查询条件 let condition = new cloudDatabase.DatabaseQuery(PicInfo),使用方法databaseZone.calculateQuery(condition, 'price', cloudDatabase.QueryCalculate.AVERAGE),其中price为PicInfo中的属性,AVERAGE表示计算平均值,还有其他枚举值如SUM计算和等,具体参考代码。
-
删除数据,首先创建一个要删除的对象,设置对象的id,根据id去删除。
let pic = new PicInfo()
pic.id = 11
databaseZone.delete(pic)
云数据库对象:参考PicInfo.ets。
构造函数返回的对象名称需要与AppGallery Connect上创建的对象名称一致。
参考
- entry\src\main\ets\pages\FunctionPage.ets
- entry\src\main\ets\pages\StoragePage.ets
- entry\src\main\ets\pages\CloudDatabasePage.ets
- entry\src\main\ets\PicInfo.ets
相关权限
该Sample应用在调用接口时需要访问网络权限"ohos.permission.INTERNET",已在module.json5文件中添加。
依赖
设备需具备WIFI能力
约束与限制
- 本示例仅支持标准系统上运行,支持设备:华为手机、平板。
- 本示例支持API version 12。
- 本示例需要使用的HarmonyOS系统版本:HarmonyOS Next Developer Beta1及以上。
- 本示例需要使用的HarmonyOS SDK版本:HarmonyOS Next Developer Beta1 SDK及以上。
- 本示例需要使用DevEco Studio Next Developer Beta1及以上版本进行编译运行。