# CloudFoundationKit_SampleCode_ArkTS **Repository Path**: sasspower/cloud-foundation-kit_-sample-code_-arkts ## Basic Information - **Project Name**: CloudFoundationKit_SampleCode_ArkTS - **Description**: 本示例主要实现了基于Cloud Foundation Kit在应用中使用云函数、云数据库、云存储等云端服务的功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-12-08 - **Last Updated**: 2024-12-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cloud Foundation Kit(云开发服务) ## 介绍 本示例展示了使用CloudFoundationKit提供的云函数、云存储、云数据库能力的方法,包含: 1.云函数的call函数调用功能。 2.云存储的上传下载删除功能。 3.云数据库的增删改查功能。 需要使用@kit.CloudFoundationKit。 ## 效果预览 | **云函数页面** | **云存储页面** | **云数据库页面** | |----------------------------------------|---------------------------------------|---------------------------------------| | ![](./screenshots/device/function.png) | ![](./screenshots/device/storage.png) | ![](./screenshots/device/clouddb.png) | ## Sample工程的配置与使用 ### 在DevEco中配置Sample工程的步骤如下 1. [创建项目](https://developer.huawei.com/consumer/cn/doc/app/agc-help-createproject-0000001100334664)及[应用](https://developer.huawei.com/consumer/cn/doc/app/agc-help-createharmonyapp-0000001945392297)。 2. 打开Sample应用,使用[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)配置的应用包名替换app.json5文件中的bundleName属性值。 3. 使用手动签名创建一个签名,替换工程中build-profile.json5文件中的signingConfigs的内容,或者使用自动签名功能,具体可参考 [应用/服务签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-0000001587684945-V5?catalogVersion=V5) 。 4. 在[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)平台开通云数据库、云函数、云存储服务。 5. 云函数需要创建两个名称分别为sort和sort-id的函数,函数的内容具体可以参考工程目录下functionJSDemo文件夹中的`sort_$latest`和`sort-id_$latest`。 6. 云数据库中需要配置一个名称为QuickStartDemo的存储区,创建一个名称为PicInfo的存储对象,对象属性可参考 ![](./screenshots/cloudb/object.png) 然后将对象导出为json文件,名称修改为schema.json,并替换工程resources目录下rawfile文件夹中的schema.json文件,导出文件操作可参考[新增对象](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/cloudfoundation-database-add-object-V5 )。 #### Sample工程使用说明 1. 运行该Sample应用,依次点击"云函数"、"云存储"和"云数据库"按钮,会进入相应的功能展示页面。 2. 云函数页面展示了调用sort函数返回字符串price、调用sort-id函数返回字符串id,且分别以Promise方式和Callback方式返回。 3. 云存储页面展示了上传文件、下载文件、删除文件、获取文件地址、列出存储信息、获取和设置元数据的功能,点击相应按钮执行功能,下方的message区域会打印出相关信息。 4. 云数据库页面展示了插入数据、按照各种条件查询数据、对查询数据数字属性的算术计算、更新数据、删除数据的功能,点击相应按钮执行功能,下方的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 , 使用photoAccessHelper.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](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)上创建的对象名称一致。 **参考** 1. entry\src\main\ets\pages\FunctionPage.ets 2. entry\src\main\ets\pages\StoragePage.ets 3. entry\src\main\ets\pages\CloudDatabasePage.ets 4. entry\src\main\ets\PicInfo.ets ## 相关权限 该Sample应用在调用接口时需要访问网络权限"ohos.permission.INTERNET",已在module.json5文件中添加。 ## 依赖 设备需具备WIFI能力 ## 约束与限制 1. 本示例仅支持标准系统上运行,支持设备:华为手机、平板。 2. 本示例支持API version 12。 3. 本示例需要使用的HarmonyOS系统版本:HarmonyOS Next Developer Beta1及以上。 4. 本示例需要使用的HarmonyOS SDK版本:HarmonyOS Next Developer Beta1 SDK及以上。 5. 本示例需要使用DevEco Studio Next Developer Beta1及以上版本进行编译运行。