# CloudFoundationKit_Codelab_ArkTS **Repository Path**: harmonyos_codelabs/cloud-foundation-kit_-codelab_-arkts ## Basic Information - **Project Name**: CloudFoundationKit_Codelab_ArkTS - **Description**: 此Codelab将引导您使用Cloud Foundation Kit在应用中实现与云侧进行交互的功能,包括创建并调用云函数、使用云存储管理文件、以及使用云数据库处理数据等。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-06-19 - **Last Updated**: 2025-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cloud Foundation Kit ## 简介 本示例展示了使用应用工程开发云函数、云存储、云数据库的过程,包括: 1.云函数的创建、部署及调用。 2.云存储的上传下载功能。 3.云数据库的创建和增删改查功能。 需要使用@kit.CloudFoundationKit。 ## 效果预览 | **云函数调用页面** | **云存储页面** | **云数据库页面** | |----------------------------------------|---------------------------------------|---------------------------------------| | ![](./screenshots/device/function.png) | ![](./screenshots/device/storage.png) | ![](./screenshots/device/clouddb.png) | ## 使用说明 ### 在DevEco中配置Codelab工程的步骤如下 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. 打开Codelab应用,使用[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)配置的应用包名替换app.json5文件中的bundleName属性值。 3. 使用华为认证服务SDK登录华为账号后获取用户凭据,开通华为账号认证后,使用您的"client_id"替换module.json5中metadata字段里的"client_id"对应的"value"的值。具体参考[认证服务-华为账号](https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-auth-harmonyos-arkts12-login-hwaccount-0000001975787301)。 4. 进行[手动签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-signing#section297715173233),注意:不支持自动签名。 5. 在[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)平台开通云函数、云存储和云数据库功能。 6. 云函数中需要创建名为sort的函数,函数的内容可以参考工程目录functionJSDemo下的`sort_$latest`。 7. 云数据库中需要配置一个名称为QuickStartDemo的存储区,创建一个名称为PicInfo的存储对象,对象属性可参考 ![](./screenshots/clouddb/object.png) 然后将对象导出为json文件,名称修改为schema.json,并替换工程resources目录下rawfile文件夹中的schema.json文件,导出文件操作可参考[新增对象类型](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/cloudfoundation-database-add-object)。 ### Codelab工程使用说明 1. 运行该Codelab应用,依次点击“云函数”、“云存储”和“云数据库”按钮,会进入相应的功能展示页面。 2. 云函数页面展示了调用云函数返回一个字符串price。 3. 云存储页面展示了上传图片,上传成功后打印文件地址。 4. 云数据库页面展示了插入数据,按照price字段升序条件查询数据,更新数据,删除数据的功能。 ## 工程目录 ``` ├──AppScope/resources/rawfile │ └──schema.json // 云数据库端侧配置文件 ├──entry/src/main/ets │ ├──common │ │ └──GlobalContext.ets // 全局应用上下文类 │ ├──entryability │ │ └──EntryAbility.ets // 程序入口类 │ ├──pages │ │ ├──CloudDatabasePage.ets // 云数据库页面 │ │ ├──DbInsert.ets // 云数据库更新数据页面 │ │ ├──FunctionPage.ets // 云函数页面 │ │ ├──Index.ets // 入口类文件 │ │ └──StoragePage.ets // 云存储页面 │ └──PicInfo.ets // 云数据库对象文件 ├──entry/src/main/resources // 应用资源目录 ├──functionJSDemo // AGC云函数JS Demo代码 └──screenshots // 存放截图的目录 ``` ## 具体实现 云函数:调用cloudFunction.call方法传入sort获取一个string类型的price,参考FunctionPage.ets。 使用cloudFunction.call({ name: 'sort '}) 以Promise方式返回一个FunctionResult类的值,解析FunctionResult,最终用key sort来获取想要的值“price”。 后续云数据库的查询会根据这个key去做升序查询,数据以列表展示。 云存储:调用相关方法实现图片上传,参考StoragePage.ets。 - 使用photoAccessHelper.PhotoViewPicker()选择一张图片,将选中文件copy至cache目录下。 - 使用云存储API上传文件:cloudStorage.bucket().uploadFile(context, { localPath: cacheFile, cloudPath:UI.uploadFileName, mode: request.agent.Mode.BACKGROUND}) - 上传成功后,调用bucket的getDownloadURL接口传入图片名称,来获取图片的网络地址。 ​ let bucket: cloudStorage.StorageBucket = cloudStorage.bucket(); ​ bucket.getDownloadURL(UI.uploadFileName); ​ 图片的网络地址将展示在云数据库列表中,日志会打印在屏幕下方。 云数据库:调用相关接口进行数据增删改查,参考CloudDatabasePage.ets。 - 插入数据 首先利用PicInfo创建一个需要添加的对象pic,调用方法databaseZone.upsert(pic)插入数据,插入后列表将会更新。 - 查询数据 1. 创建一个查询条件let condition = new cloudDatabase.DatabaseQuery(PicInfo); 2. 调用condition.orderByAsc('price'),根据price升序查询。 3. 调用databaseZone.query(condition)查询数据,数据以列表展示。 - 修改数据 点击修改按钮,输入修改后的名称。修改数据和插入数据方法一致,修改后列表将会更新。 - 删除数据 创建一个要删除的对象,设置对象的id,根据id删除。例如: let pic = new PicInfo(); pic.id = 11; databaseZone.delete(pic); 删除后列表将会更新。 云数据库对象,参考PicInfo.ets。 **参考** 1. [entry\src\main\ets\pages\FunctionPage.ets](./entry/src/main/ets/pages/FunctionPage.ets) 2. [entry\src\main\ets\pages\StoragePage.ets](./entry/src/main/ets/pages/StoragePage.ets) 3. [entry\src\main\ets\pages\CloudDatabasePage.ets](./entry/src/main/ets/pages/CloudDatabasePage.ets) 4. [entry\src\main\ets\pages\DbInsert.ets](./entry/src/main/ets/pages/DbInsert.ets) 5. [entry\src\main\ets\PicInfo.ets](./entry/src/main/ets/PicInfo.ets) ## 相关权限 该Codelab应用在调用接口时需要访问网络权限"ohos.permission.INTERNET",已在module.json5文件中添加。 ## 依赖 设备需具备WIFI能力。 ## 约束与限制 1. 本示例仅支持标准系统上运行,支持设备:华为手机。 2. 本示例支持API version 12及以上。 3. HarmonyOS系统:HarmonyOS 5.0.0 Release及以上。 4. DevEco Studio版本:DevEco Studio 5.0.0 Release及以上。 5. HarmonyOS SDK版本:HarmonyOS 5.0.0 Release SDK及以上。