「九」HarmonyOS 5 端云一体化实战项目——「M.U.」应用云侧开发云数据库

news2024/12/18 15:02:34

1 立意背景

M. 代表 “我”,U. 代表 “你”,这是一款用于记录情侣从相识、相知、相恋、见家长、订婚直至结婚等各个阶段美好记忆留存的应用程序。它旨在为情侣们提供一个专属的空间,让他们能够将一路走来的点点滴滴,如初次相遇时的心动瞬间、逐渐了解彼此过程中的深入交流、甜蜜恋爱时期的浪漫时刻、面对家长时的紧张与期待、订婚时的喜悦以及结婚时的神圣幸福等,都以一种独特而有意义的方式记录下来。这款应用程序就像是一个装满珍贵回忆的宝库,随着时间的推移,见证着情侣们爱情旅程的每一个重要阶段,成为他们美好爱情的永恒见证者和守护者。

2 HarmonyOS特性能力接入场景

  • 华为账号服务
  • 云开发服务
  • 预加载

我们团队开发的MU作品是一款用于记录,情侣之间相处时各个阶段照片的归集。提供欢迎页、用户无感知匿名登录,相册管理,用户信息查看等功能。

  • 欢迎页快速响应:通过预加载服务,实现可更换欢迎页快速响应功能。

  • 用户无感知匿名登录:我们使用首次启动应用程序生成的UUID作为主键,关联用户的unionId和openId,达到用户无论是卸载重装还是冷启动,都能够快速响应用户数据信息。用户基本信息通过云数据库接口存储云端,用户头像通过云存储接口存入云端并更新对应的云数据库数据条目。

  • 相册管理:使用云数据库和云存储服务实现相册的封面、标题、描述、内容信息的留存。

image-20241211192208851

3 作品资源

3.1 欢迎页

image-20241211184803136

3.2 时光轴

image-20241212172058787

1)创建相册

image-20241212172136678

2)上传照片

image-20241212172206452

3.3 我的

image-20241212172246623

4 一些理论性的知识要点

4.1 云数据库概述

云数据库是一款端云协同的数据库产品,是AGC云开发(AGC Serverless)关键服务之一,为AGC构建了MBaas(Mobile Backend as a Service,移动后端即服务)能力。云数据库提供了端云数据的协同管理、统一的数据模型和丰富的数据管理API接口等能力,端侧可以编写少量的代码实现AGC云端云数据库的交互。

云数据库采用基于对象模型的数据存储结构,与常见的关系数据库(MySQL,Oracle等)类似,包含数据表、表字段、表字段值、主键,以及表操作权限。唯一不同在于存储区,数据以对象的形式存储在不同的存储区中,每一个对象,都是一条完整的数据记录。存储区是一个独立的数据存储区域,每个存储区拥有完全相同的对象类型定义(也就是数据表),可以根据业务能力为不同用户划分不同的存储区。

云数据库对象类型、存储区以及数据,可以通过AGC控制台定义、创建和管理,也可以通过一站式集成开发工具DevEco Studio定义、创建和管理。云数据库支持多种数据类型,包括字符串、数值、文本、日期等。

云数据库还提供了多重数据安全策略,基于隐私或者敏感数据的全程加密管理能力,加密字段的数据在端侧会被加密,然后再以密文形式发送并存储到云数据库中。同时,提供基于角色的权限管理模型,预置4种角色和3种权限,来保证数据的安全,同时简化了权限管理操作。

4.2 数据库模型概述

云数据库是一款基于对象模型的数据库,采用存储区、对象类型和对象三级结构。每个应用在开通云数据库服务后,都会实例化一个云数据库实例,该实例中可以创建多个对象类型(数据表)、多个存储区。一个对象类型的数据可以对应一个存储区,也可以对应多个存储区。

  • 对象类型(ObjectType):用于定义存储对象的集合,不同的对象类型对应的不同数据结构。每创建一个对象类型,云数据库会在每个存储区实例化一个与之结构相应的对象类型,用于存储对应的数据。
  • 存储区(CloudDBZone):是一个独立的数据存储区域,多个数据存储区相互独立。每个存储区拥有完全相同的对象类型定义,开发者可以根据业务需要自定义存储区中存储的对象。
  • 对象(CloudDBZoneObject):是云数据库基本操作单元,每个对象,都是一条完整的数据记录。

4.2.1 数据类型

云数据库支持多种数据类型,如下表所示:

数据类型描述取值范围说明
String字符串类型最大长度200字符串长度超过200,请使用Text类型。
Boolean布尔类型true:真;false:假。-
Byte单字节整型-128 ~ +128-
Short双字节整型-32,768 ~ +32,767-
Integer四字节整型-2,147,483,648 ~ +2,147,483,647-
Long八字节整型-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807-
Float单精度浮点数-3.40E+38 ~ +3.40E+38,6位十进制有效数字。-
Double双精度浮点数-1.79E+308 ~ +1.79E+308,15位十进制有效数字。-
ByteArray字节数组-一般用于文件类型的数据存储,如图片、文档和视频等。
Text文本类型--
Date日期类型--
IntAutoIncrement自增类型,从1开始自增,Integet类型。1 ~ 2,147,483,647-
LongAutIncrement自增类型,从1开始自增,Long类型。1 ~ 9,223,372,036,854,775,807-

4.2.2 权限管理

云数据库支持对所有用户的访问进行鉴权,保障应用数据的安全。云侧访问云数据库的用户角色默认位管理员角色,即从AGC控制台、云函数和Server端访问云数据库角色,该角色默认拥有所有权限。端侧为应用程序运行端,端侧的数据操作有严格的安全规则限制,其数据的读写权限根据云侧权限配置表进行控制。

云数据库预置4种角色和3种权限,如下表所示:

角色queryupsertdelete说明
所有人代表所有用户,包含认证和非认证用户。该角色默认拥有query权限,可自定义配置upsert和delete权限,但不建议将upsert和delete权限配置给所有人角色。当对象类型中设置了加密字段之后,表示开启全程加密功能,此时所有人角色将不会拥有query、upsert和delete权限,且不允许修改。
认证用户经过AGC登录认证的用户。该角色默认拥有query权限,可自定义配置upsert和delete权限。当对象类型中设置了加密字段之后,表示开启全程加密功能,此时认证用户角色将不会拥有query、upsert和delete权限,且不允许修改。
数据创建者经过认证的数据创建用户。该角色默认拥有所有权限,且可自定义配置所有权限。每条数据都有其对应的数据创建人(即应用用户),每个数据创建者仅可以upsert或者delete自己创建的数据,不能upsert或者delete他人创建的数据。数据创建者的信息保存在数据记录的系统表中。
管理员应用开发者,主要是指通过AGC控制台或FaaS(Function as a Service,函数即服务)侧访问云数据库的角色。该角色默认拥有所有权限,且可自定义配置所有权限。管理员可以管理并配置其他角色的权限。

5 创建一个存储「欢迎页信息」的对象类型

5.1 开发流程

使用端云一体化云侧工程开发云数据库流程为以下四步:

  • 确保云数据库服务开通。
  • 通过DevEco Studio工具在云侧工程创建一个用于存储数据条目的对象类型。
  • 通过DevEco Studio工具在云侧工程为创建的对象类型添加数据,并配置数据所在存储区。
  • 数据成功添加后,通过DevEco Studio工具提供的一键部署能力,将对象类型和数据条目部署到AGC云端。

5.2 确保云数据库服务开通

使用DevEco Studio预置的通用云开发模板创建的端云一体化工程,在工程初始化时,会自动开通云开发(Serverless)服务,若在开发工具主界面通知栏(Notifications)中显示服务开通失败,需按照以下步骤进行开通个。

  • 登录AGC控制台,点击“我的项目”。

image-20241210123424988

  • 在项目列表中点击需要开通云数据库的项目。

image-20241210143156762

  • 在打开的目标项目左侧导航栏选择“云开发(Serverless) > 云数据库”,进入云数据库页面,点击“立即开通”。

  • 在开通云数据库时,若尚未设置默认数据处理位置,在弹出的”数据处理位置“窗口进行设置,仔细阅读弹出提示框的文字说明后,在“启用”栏为您的项目勾选一个或多个数据处理位置,并在“设为默认”栏将其中一个设置为默认数据处理位置。

img

5.3 云侧创建对象类型

  • 展开云侧工程目录,右击“clouddb/objecttype”目录,选择“New > Cloud DB Object Type”。

image-20241210144911064

  • 在弹出的新建对象类型窗口中输入对象类型名称(下文以“Welcome”为例)后,点击OK按钮完成创建。对象类型命名必须符合以下规范:
    • 只能包含大小写字母,数字,下划线,并且至少包含字母类型。
    • 必须以字母开头,以字母或者数字结尾,不允许以“sqlite_”开头,不允许以下划线结尾。
    • 不允许使用如下系统保留名称:naturalbase_metadata、objecttypeinfohelper、t_data_upgrade_info、t_index_schema、t_nstore_config、t_schema_negotiate_info、t_metadata_schema、t_nstore_permission、t_system_config。

image-20241210150732982

  • DevEco Studio工具会根据通用云开发模板内置的对象类型模板新建对象类型JSON文件”Welcome.json“,并会在编码区自动打开该文件。文件结构属性包括对象类型名称(objectTypeName)、对象类型配置字段信息(fields)、对象类型索引信息(indexes)、对象类型角色权限(permissions)。

image-20241210151140816

  • 根据业务需要在“fields”中配置对象类型字段信息,字段属性(需要满足的规范参见在“fileds”中为该对象类型配置字段信息)如下表所示。
参数必选(M)/可选(O)说明
fieldNameM字段名称。
filedTypeM字段的数据类型。
belongPrimaryKeyO设置该字段是否为对象类型的主键,默认值为false。
notNullO设置字段值是否为非空,默认为false。
isNeedEncryptO设置字段是否需要加密,开启全程加密数据管理功能,默认值为false。
isSensitiveO设置字段是否为敏感字段,默认值为false。
defaultValueO字段为非空时,必须设置默认值。

例如:为“Welcom”对象类型配置如下字段:

filedNamefieldTypebelongPrimaryKeynotNullisNeedEncryptdefaultValue
idIntegertruetrue
imgString
statusByte0
createTimeDate
"fields": [
    {"fieldName": "id", "fieldType": "Integer", "notNull": true, "belongPrimaryKey": true},
    {"fieldName": "img", "fieldType": "String"},
    {"fieldName": "status", "fieldType": "Short", "defaultValue": 0},
    {"fieldName": "createTime", "fieldType": "Date"}
]
  • 根据业务需要在“indexes”中为该对象类型配置索引、索引包含的字段、以及索引包含的字段的排序方式。索引属性(需要满足的规范参见在“indexes”中为该对象类型配置索引)如下表所示。
参数必选(M)/可选(O)说明
indexNameM索引名称。
indexList > fieldNameM索引包含的字段。
indexList > sortTypeM索引包含的字段的排序方式,支持升序或降序。

例如:为“Welcom”对象类型配置如下索引:

indexNamefieldNamesortType
IND_202412101709idASC
createTimeDESC
"indexes": [
    {
      "indexName": "IND_202412101709",
      "indexList": [
        {
          "fieldName": "id",
          "sortType": "ASC"
        },
        {
          "fieldName": "createTime",
          "sortType": "DESC"
        }
      ]
    }
  ]
  • 根据实际业务在“permissions”中设置各角色是否具有该对象类型的Read、Upsert(包含新增和修改)和Delete权限。角色权限属性(需要满足的规范参见在“permissions”中设置各角色对象类型权限)如下表所示。
参数必选(M)/可选(O)说明
roleM用户角色。
rightsM授予角色的权限,包括Read、Upsert(包括新增和修改)和Delete权限。

例如:为“Welcom”对象类型各角色配置权限:

角色ReadUpsertDelete
World
Authenticated
Creator
Administrator
"permissions": [
    {
      "role": "World",
      "rights": [
        "Read"
      ]
    },
    {
      "role": "Authenticated",
      "rights": [
        "Read",
        "Upsert"
      ]
    },
    {
      "role": "Creator",
      "rights": [
        "Read",
        "Upsert",
        "Delete"
      ]
    },
    {
      "role": "Administrator",
      "rights": [
        "Read",
        "Upsert",
        "Delete"
      ]
    }
  ]

5.4 添加数据条目

如果在创建对象类型后,直接一键部署对象类型,会出现以下异常信息。发生这种异常信息是因为未在对象类型内添加数据条目。

image-20241210201542362

  • 为对象类型添加数据条目,并配置数据所在的存储区,当前支持手动创建和自动生成数据条目文件,建议使用DevEco Studio工具提供的自动生成数据条目文件。右击对象类型JSON文件,选择“Generate Data Entry”,依旧以对象类型“Welcome”为例,包含“id”、“img”、“status”、“createTime”六个字段。

image-20241210204716519

  • 在弹出的“New Cloud DB Data Entry”窗口内,为即将生成的数据条目文件定义名称。此处取默认值“d_Welcome”为例。

image-20241210204849343

  • 会根据DevEco Studio工具预置通用云开发模板提供的数据条目模板自动在“clouddb/dataentry”目录下为对象类型“Welcome”生成数据条目文件“d_Welcome”,该文件中已为开发者预置了默认的存储区,所属对象类型名称(“Welcome”),以及对象类型的字段名(“id”、“img”、“status”、“createTime”)。
    • cloudDBZoneName:配置存储区名称,支持自定义,需要开发者记住存储区名称,在使用API访问云数据库时需要使用该值获取对象类型数据。
    • objectTypeName:对象类型名称。
    • objects:配置当前对象类型中所有字段的值,即写入数据。一个对象即为一条数据,可以通过新建一个对象来为字段赋新值,也可以修改某个对象下字段的值。需要注意的是,主键或加密字段的值不支持修改。
{
  "cloudDBZoneName": "default",
  "objectTypeName": "Welcome",
  "objects": [
    {
      "id": 1,
      "img": "string1",
      "status": 0,
      "createTime": 1733835123302
    }
  ]
}

5.5 部署云数据库

完成对象类型创建以及对象类型数据条目创建后,开发者可以通过右击对象类型或者数据条目直接将对象类型和数据条目部署到AGC云端。DevEco Studio工具支持单个对象类型和数据条目部署,也支持批量部署。

  • 单个对象类型部署,右击对象类型名称。若批量部署,需要右击“clouddb”目录,选择“Deploy Cloud DB”。

image-20241210214704992

  • 可以在开发工具主界面底部状态栏右侧查看云数据库打包与部署进度。

image-20241210214855309

  • 等待部署云数据库,直至出现“Deploy successfully”消息,表示云数据库已成功部署。

image-20241210214913470

  • 云数据库部署成功后,DevEco Studio工具会自动从AGC云端下载云数据库的schema文件,并将该文件存储在端侧工程“AppScope/resources/rawfile“目录,文件名称为”schema.json“,该文件是端侧API访问云数据库必须引入的配置文件。

image-20241210215224571

5.6 查看云数据库部署情况

  • 在DevEco Studio工具主界面顶部菜单栏选择“Tools > Cloud Dev”打开云开发管理面板。

image-20241210215552640

  • 如果开发工具尚未登录华为开发者账号,需要先登录授权才可以使用云开发管理面板能力。点击面板中的“CloudDev > Go to console”或者“Serverless > Cloud DB > Go to console”打开AGC控制台。两者区别在于第一种方式需要在AGC控制台页面点击左侧“云数据库”菜单,而第二种方式可以直接定位到AGC控制台云数据库子控制台。

image-20241210220035485

  • 分别点击“对象类型”、“存储区”与“数据”页签,查看通过DevEco Studio工具开发并部署的云数据库资源是否已经成功部署到AGC云端。

image-20241210221037917

6 总结

本小节主要对云数据库相关概念做了简单了解,并通过创建「欢迎页信息」对象类型详细讲解了使用一站式集成工具DevEco Studio开发、部署云数据库至AGC云端,同时提供了如何查看部署到AGC云端的云数据库资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2261647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NVM:安装配置使用(详细教程)

文章目录 一、简介二、安装 nvm三、配置 nvm 镜像四、配置环境变量五、使用教程5.1 常用命令5.2 具体案例 六、结语 一、简介 在实际的开发和学习中可能会遇到不同项目的 node 版本不同,而出现的兼容性问题。 而 nvm 就可以很好的解决这个问题,它可以在…

Spark优化----Spark 数据倾斜

目录 数据倾斜的表现: 定位数据倾斜问题: 解决方案一:聚合原数据 避免 shuffle 过程 缩小 key 粒度(增大数据倾斜可能性,降低每个 task 的数据量) 增大 key 粒度(减小数据倾斜可能性&#xff0c…

第十六届蓝桥杯模拟赛(第一期)-Python

本次模拟赛我认为涉及到的知识点: 分解质因数 Python的datetime库 位运算 简单dp 1、填空题 【问题描述】 如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。 请问 2024 有多少个质因数。 【答案提交】 这是一道结…

MATLAB2021B APP seriallist 串口通信

文章目录 前言一、项目需要二、使用步骤1.查找串口填写到查找列表2.发送函数3. 接收函数4.检测串口按钮5.选择串口号 总结 前言 提示:这里可以添加本文要记录的大概内容: 项目需要: 提示:以下是本篇文章正文内容,下面…

OpenShift 4 - 多云管理(2) - 配置多集群观察功能

《OpenShift / RHEL / DevSecOps 汇总目录》 本文在 OpenShift 4.17 RHACM 2.12 环境中进行验证。 文章目录 多集群观察技术架构安装多集群观察功能监控多集群的运行状态监控多集群的应用运行在被管集群监控应用运行在管理集群监控被管集群的应用运行 参考 多集群观察技术架构…

AMBA-CHI协议详解(十二)

AMBA-CHI协议详解(一)- Introduction AMBA-CHI协议详解(二)- Channel fields / Read transactions AMBA-CHI协议详解(三)- Write transactions AMBA-CHI协议详解(四)- Other transac…

【win10+RAGFlow+Ollama】搭建本地大模型助手(教程+源码)

一、RAGFlow简介 RAGFlow是一个基于对文档深入理解的开源RAG(Retrieval-augmented Generation,检索增强生成)引擎。 主要作用: 让用户创建自有知识库,根据设定的参数对知识库中的文件进行切块处理,用户向大…

Android中坐标体系知识超详细讲解

说来说去都不如画图示意简单易懂啊!!!真是的! 来吧先上张图! (一)首先明确一下android 中的坐标系统: 屏幕的左上角是坐标系统原点(0,0) 原点向右延伸是X轴正…

IO的进阶

目录 1. 字符流转向字节流的桥梁1.1 OutputStreamWriter1.2 InputStreamReader1.3 编码与解码1.4 常见编码方式1.5 编码与解码的注意事项 2.Properties2.1概述2.2 Properties 的常用方法2.3 Properties 的应用场景2.4 实例 3.序列化3.1 ObjectOutputStream 4.字符编码4.1 ASCII…

【计算机网络】期末考试预习复习|中

作业讲解 转发器、网桥、路由器和网关(4-6) 作为中间设备,转发器、网桥、路由器和网关有何区别? (1) 物理层使用的中间设备叫做转发器(repeater)。 (2) 数据链路层使用的中间设备叫做网桥或桥接器(bridge)。 (3) 网络层使用的中间设备叫做路…

Edge Scdn用起来怎么样?

Edge Scdn:提升网站安全与性能的最佳选择 在当今互联网高速发展的时代,各种网络攻击层出不穷,特别是针对网站的DDoS攻击威胁,几乎每个行业都可能成为目标。为了确保网站的安全性与稳定性,越来越多的企业开始关注Edge …

UE4_控件蓝图_制作3D生命血条

一:效果图如下: 二、实现步骤: 1、新建敌人 右键蓝图类 选择角色, 重命名为BP_Enemytest。 双击打开,配置敌人网格体 修改位置及朝向 效果如下: 选择合适的动画蓝图类: 人物就有了动作&#x…

厦门凯酷全科技有限公司引领电商营销新风尚

在当今数字化经济快速发展的背景下,抖音作为领先的短视频和直播平台,已成为品牌推广和产品销售的重要渠道。厦门凯酷全科技有限公司(以下简称“凯酷全”)凭借其专业的团队和丰富的经验,专注于为客户提供高质量的抖音电…

高扬程潜水泵:大流量与高效率的完美结合|深圳鼎跃

洪水是由暴雨、风暴潮等等自然因素引起的江河湖海水量迅速增加或水位迅猛上涨的水流现象。一旦发生洪水事件,会侵袭河道沿岸的城市、农田等场景,在低洼地区容易形成积水,不仅影响人们的生活,还存在一定的安全风险。 高扬程潜水泵是…

神经网络基础-神经网络搭建和参数计算

文章目录 1.构建神经网络2. 神经网络的优缺点 1.构建神经网络 在 pytorch 中定义深度神经网络其实就是层堆叠的过程,继承自nn.Module,实现两个方法: __init__方法中定义网络中的层结构,主要是全连接层,并进行初始化。…

web网页前后端交互方式

参考该文&#xff0c; 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单&#xff0c;设置method属性定义发送表单数据的方式是get还是post。 如使用get方式&#xff0c;则提交的数据会在url中显示&#xff1b;如使用post方式&#xff0c;提交…

Mac配置 Node镜像源的时候报错解决办法

在Mac电脑中配置国内镜像源的时候报错,提示权限问题,无法写入配置文件。本文提供解决方法,青测有效。 一、原因分析 遇到的错误是由于 .npm 目录下的文件被 root 用户所拥有,导致当前用户无法写入相关配置文件。 二、解决办法 在终端输入以下命令,输入管理员密码即可。 su…

Linux实操篇-远程登录/Vim/开机重启

目录 传送门前言一、远程登录1、概念2、ifconfig3、实战3.1、SSH&#xff08;Secure Shell&#xff09;3.2、VNC&#xff08;Virtual Network Computing&#xff09;3.3、RDP&#xff08;Remote Desktop Protocol&#xff09;3.4、Telnet&#xff08;不推荐&#xff09;3.5、FT…

【C/C++进阶】CMake学习笔记

本篇文章包含的内容 一、CMake简介二、使用CMake构建工程2.1 一个最简单的CMake脚本2.2 使用变量和宏2.3 文件搜索 三、使用CMake制作和使用库文件3.1 静态库和动态库3.2 字符串操作3.3 CMake制作库文件3.4 CMake使用库文件3.4.1 使用link_libraries链接3.4.2 使用target_link_…

JS 生成防篡改水印

网页中有水印的需求&#xff0c;今天我们实现手写一个防篡改水印&#xff0c;先看下效果图&#xff1a; 一、创建class函数 传递一个dom为水印包裹器&#xff0c;有一些监听防篡改的observer&#xff0c;然后实例化的时候创建水印&#xff0c;执行create()方法 class WaterMa…