0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DevEco Studio端云协同之云数据库

ITMING 来源:ITMING 作者:ITMING 2023-02-23 14:29 次阅读

在自定义HamronyOS启动页组件一文中封装了启动页组件,本节将结合端云协同开发,将启动页需要的参数保存到云数据库中,实现根据特定节气显示不同的启动页背景图。

1 环境

  • DevEco Studio 3.1 Beta1(V3.1.0.200)
  • 触觉智能IDO-EVB3568-V1开发板
  • 自定义teui组件库
  • 端云协同开发应用创建

2 云数据库

云数据库(Cloud DB)是Serverless服务提供的能力之一,是AppGallery Connect平台解决方案的一部分,是端云协同的数据库产品,支持数据在端云、多端之间无缝同步,并为应用提供离线支持,以帮助开发者快速构建端云、多端协同应用,开发者可以聚集于应用本身业务,极大提升开发者开发效率,更多请至华为App Gallery Connect云数据库了解。

3 端云协同开发云数据库

DevEco Studio 3.1 Beta1提供了端云协同开发,可以通过云侧CloudProgram项目创建云数据库对象类型、存储区、配置权限,端侧引入相关的云数据库文件即可进行云数据库数据操作,应用开发流程如下图所示:

3.1 云侧CloudProgram工程云数据库配置

3.1.1 创建对象类型

云数据库采用存储区、对象类型和对象三级结构基于对象模型的数据库。对象类型是用于定义存储对象的集合,不同对象类型对应的不同数据结构。

在云侧CloudProgram工程clouddb目录下clouddb目录右键New > Cloud DB Object Type创建对象类型,输入对象类型名称,DevEco Studio会自动创建初始对象类型JSON文件。

在对象类型JSON文件中,可以配置字段、索引以及角色于权限,表3-1为数据类型JSON文件属性简单介绍。

表3-1 数据类型JSON文件属性(更多描述参见官方文档)

参数 说明
fields 数据表字段集,配置属性参见表3-2
indexes 数据表索引,配置属性参见表3-3
permissions 操作数据表角色及对应权限,配置属性参见表3-4
objectTypeName 数据表名称

表3-2 数据表字段(更多描述参见官方文档)

参数 说明
fieldName 字段名称
fieldType 字段数据类型 当前支持:String, Boolean, Byte, Shor, Integer, Long, Float, Double, ByteArray, Text, Date, IntAutoIncrement, LongAutoIncrement
belongPrimaryKey 字段是否为主键
notNull 字段值是否为空
isNeedEncrypt 字段是否需要加密
"fields": [
    {
      "belongPrimaryKey": true,
      "fieldName": "id",
      "fieldType": "Integer",
      "isNeedEncrypt": false,
      "notNull": true
    },
    {
      "belongPrimaryKey": false,
      "fieldName": "timer",
      "fieldType": "Integer",
      "isNeedEncrypt": false,
      "notNull": false
    },
    {
      "belongPrimaryKey": false,
      "fieldName": "isLogo",
      "fieldType": "Boolean",
      "isNeedEncrypt": false,
      "notNull": false
    },
    {
      "belongPrimaryKey": false,
      "fieldName": "backgroundImg",
      "fieldType": "String",
      "isNeedEncrypt": false,
      "notNull": false
    },
    {
      "belongPrimaryKey": false,
      "fieldName": "companyName",
      "fieldType": "String",
      "isNeedEncrypt": false,
      "notNull": false
    },
    {
      "belongPrimaryKey": false,
      "fieldName": "mFontColor",
      "fieldType": "String",
      "isNeedEncrypt": false,
      "notNull": false
    },
    {
      "belongPrimaryKey": false,
      "fieldName": "status",
      "fieldType": "Integer",
      "isNeedEncrypt": false,
      "notNull": false
    },
    {
      "belongPrimaryKey": false,
      "fieldName": "createUser",
      "fieldType": "Integer",
      "isNeedEncrypt": false,
      "notNull": false
    },
    {
      "belongPrimaryKey": false,
      "fieldName": "createTime",
      "fieldType": "Date",
      "isNeedEncrypt": false,
      "notNull": false
    }
  ],

表3-3 数据表索引(更多描述参见官方文档)

参数 说明
indexName 索引名称
indexList 索引包含的字段
"indexes": [
    {
      "indexName": "IDX_202302221057",
      "indexList": [
        {
          "fieldName": "id",
          "sortType": "DESC"
        }
      ]
    }
  ],

表3-4 操作数据表角色及权限(更多描述参见官方文档)

参数 说明
World 所有用户,默认最多仅可拥有Read权限
Authenticated AppGallery Connect登录的认证用户
Creator 数据创建用户
Administrator 应用开发者
"permissions": [
    {
      "rights": [
        "Read"
      ],
      "role": "World"
    },
    {
      "rights": [
        "Read",
        "Upsert"
      ],
      "role": "Authenticated"
    },
    {
      "rights": [
        "Read",
        "Upsert",
        "Delete"
      ],
      "role": "Creator"
    },
    {
      "rights": [
        "Read",
        "Upsert",
        "Delete"
      ],
      "role": "Administrator"
    }
  ]

3.1.2 创建数据条目

创建完对象类型,可以通过为对象类型添加数据条目,来预置数据库内容,支持手动创建和自动生成数据条目JSON文件。

  • 手动创建数据条目文件:在clouddb目录下dataentry目录右键New > Cloud DB Data Entry创建数据条目JSON文件,输入数据条目名称。
  • 自动生成数据条目文件:在对象类型JSON文件右键Generate Data Entry输入数据条目自定义名称。

无论选择哪种创建数据条目的方法,DevEco Studio会自动初始化已配置的对象类型,并赋初始值,同时配置数据条目所在存储区名称,如代码中的cloudDBZoneName,可自定义。

{
  "cloudDBZoneName": "cloudDBZoneSplash",
  "objectTypeName": "splash",
  "objects": [
    {
      "id": 1,
      "timer": 3,
      "isLogo": false,
      "backgroundImg": "https://img1.baidu.com/it/u=1884825806,3687074543&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=889",
      "companyName": "xxxx有限公司",
      "mFontColor": "#F2F2F2",
      "status": 0,
      "createUser": 1,
      "createTime": 1677035025264
    },
    {
      "id": 2,
      "timer": 3,
      "isLogo": true,
      "backgroundImg": "https://img1.baidu.com/it/u=1884825806,3687074543&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=889",
      "companyName": "xxxx有限公司",
      "mFontColor": "#F2F2F",
      "status": 1,
      "createUser": 1,
      "createTime": 1677035025264
    }
  ]
}

3.1.3 部署云数据库

在DevEco Studio还未实现端云协同开发之前,要实现云侧数据库需要在网页端配置。当前开发者只需要在DevEco Studio云侧工程中配置好云数据库信息后,右键clouddb目录选择Deploy Cloud DB将云数据库需要的资源统一部署到AGC控制台,Event Log会显示同步进度信息。部署完成后,可在AGC控制台查看部署的云数据库信息。

3.2 端侧Application访问云侧数据库业务实现

使用端云协同开发,将较于之前的操作会减少如配置开发环境agconnect-services.json文件引入,该文件在创建端云协同工程时会自动初始化到工程中,在entry/src/main/resources/rawfile中;同时会自动引入相关依赖文件,如database-ohos等。

除配置文件和依赖文件之外,还需要和之前的操作相同,导出JSON格式文件和JS格式文件并添加至本地开发环境中。

3.2.1 添加对象类型文件

  • 将导出的数据类型JSON文件内容拷贝到entry/src/main/ets/services/app-schema.json中,若无该文件则创建即可。
  • 将导出的JS格式文件拷贝到entry/src/main/ets/services/目录下。

3.2.2 云数据库操作

该文件仅作为示例应用获取云数据库数据,若需要更详细的开发者可自定义封装,其中异常并未作处理,开发者可根据自身业务做响应的处理。

// entry/src/main/ets/services/CloudDBService.ts
// @ts-ignore
import * as schema from './app-schema.json';
import { splash } from './splash';
import {
    AGConnectCloudDB,
    CloudDBZoneConfig,
    CloudDBZone,
    CloudDBZoneQuery
} from '@hw-agconnect/database-ohos';

import { AGCRoutePolicy } from '@hw-agconnect/core-ohos';

import { getAGConnect } from './AgcConfig';

export class CloudDBService {

    private static readonly ZONE_NAME = "cloudDBZoneSplash";

    private static init(context: any): Promise

3.2.3 将云数据库数据渲染到页面

利用aboutToAppear()方法获取云数据库中的启动页信息。

import { CloudDBService as CloudDB } from '../services/CloudDBService';
import { SplashPage } from '@tetcl/teui';
@Entry
@Component
struct Splash {

  @State result: SplashObj = new SplashObj(5);
  @State isSkip: boolean = false;
  
  onSkipt() {
    // 跳转页面
  }
  
  build() {
    Column() {
      if (this.isSkip) {
        SplashPage({ mSplash: {
          timer: this.result.timer,
          isLogo: this.result.isLogo,
          backgroundImg: this.result.backgroundImg,
          companyName: this.result.companyName,
          mFontColor: this.result.mFontColor
        }, skip: this.onSkip })
      }
    }
    .width('100%')
    .height('100%')
  }
  
  aboutToAppear() {
    // 若受网络印象获取数据时间过长,此处可以自定义一个数据加载动画
    CloudDB.query(getContext(this)).then(ret => {
      this.isSkip = true;
      this.result = ret;
    })
  }
}

3.3 在开发板预览效果

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • serverless
    +关注

    关注

    0

    文章

    65

    浏览量

    4501
  • 云数据库
    +关注

    关注

    0

    文章

    23

    浏览量

    1931
  • DevEco Studio
    +关注

    关注

    0

    文章

    21

    浏览量

    1048
  • HarmonyOS3
    +关注

    关注

    0

    文章

    37

    浏览量

    981
收藏 人收藏

    评论

    相关推荐

    数据库SQL Server 2008 R2版推出OSS版本数据

    摘要: 日前,阿里数据库SQL Server 2008 R2版开放了新的数据功能,用户只需把本地数据库的备份文件上传到阿里
    发表于 01-17 11:10

    数据库厂商都怕低价竞争?阿里说并不可惧

    摘要: 2017年Gartner发布的数据库厂商推荐报告中首次收录了来自中国的数据库厂商,分别是阿里、巨杉数据库SequoiaDB以及南大通用GBase。在这三家厂商中,巨杉
    发表于 05-11 11:02

    阿里数据库备份DBS商业化发布,数据库实时备份到OSS

    摘要: 数据库备份DBS作为一款阿里产品,专注于阿里范畴数据库的一站式保护,已于2018年5月17日正式商业化发布。数据库备份DBS已于
    发表于 05-30 17:49

    DevEco Studio 3.1 Beta新特性知多少

    协同开发 DevEco Studio提供的一体化开发功能,支持侧、
    发表于 04-23 11:06

    HarmonyOS元服务一体化开发快速入门(下)

    服务(认证服务、函数、存储)最新版本HarmonyOS SDK,同时会自动集成一体化登录组件的最新SDK。 ** 3. 侧工程自
    发表于 06-15 15:52

    鸿蒙原生应用/元服务开发-新版本一体化模板体验反馈

    Ability模板即可。 三、体验 新增: 最新一体化新增“数据库一体组件”, 版本
    发表于 12-05 14:57

    阿里数据库MongoDB版架构及安全解读

    12月18日,阿里100%兼容MongoDB的数据库AliCloudDB for MongoDB宣布开放公测,基于三节点副本集的高可用框架,阿里
    发表于 10-13 11:21 0次下载
    阿里<b class='flag-5'>云</b><b class='flag-5'>数据库</b>MongoDB版架构及安全解读

    数据库是未来的数据库商业的成功,却是技术的倒退

    在越来越多的会议、媒体、文章、报道上看到一种说法:“未来的数据库数据库的时代,数据库厂商终将取代传统
    的头像 发表于 10-14 15:51 2113次阅读
    <b class='flag-5'>云</b><b class='flag-5'>数据库</b>是未来的<b class='flag-5'>数据库</b>商业的成功,却是技术的倒退

    数据库和自建数据库的区别及应用

    数据库是指优化和部署在云端的数据库,阿里云和腾讯都提供数据库
    的头像 发表于 11-20 16:26 4592次阅读
    <b class='flag-5'>云</b><b class='flag-5'>数据库</b>和自建<b class='flag-5'>数据库</b>的区别及应用

    腾讯数据库生态经 腾讯数据库生态战略

    数据库是最重要的基础服务之一,已经成为服务商的核心竞争力之一,属于兵家必争之地。厂商要想取得成功,数据库之争不容有失,一个典型的例子,
    发表于 12-30 11:24 515次阅读

    数据库之战下半场,腾讯数据库打的更有侵略性

    文/老鱼 数据库上半场,是线上市场(公有)之争,目前大局已定,阿里以绝对优势领跑。如今,数据库
    的头像 发表于 01-10 21:50 1857次阅读
    <b class='flag-5'>云</b><b class='flag-5'>数据库</b>之战下半场,腾讯<b class='flag-5'>云</b><b class='flag-5'>数据库</b>打的更有侵略性

    华为数据库-RDS for MySQL数据库

    华为数据库-RDS for MySQL数据库 华为数据库作为华为的一款
    的头像 发表于 10-27 11:06 1491次阅读

    华为数据库\-GaussDB for MySQL数据库

    华为数据库-GaussDB for MySQL数据库 GaussDB是华为自主研发的一款高性能关系型数据库,它完全兼容了MySQL,而且
    的头像 发表于 10-27 14:56 1215次阅读

    数据库已成趋势,华为数据库与传统数据库对比解析

    ,并不适合海量数据存储,并且装载的速度慢。举个例子,当传统索引需要重新创建,加载的性能就会大幅度下降。为了解决此类问题,华为数据库应运而生。 与传统数据库不同的是,华为
    的头像 发表于 12-27 16:52 1024次阅读
    <b class='flag-5'>数据库</b>上<b class='flag-5'>云</b>已成趋势,华为<b class='flag-5'>云</b><b class='flag-5'>数据库</b>与传统<b class='flag-5'>数据库</b>对比解析

    数据库和普通数据库区别?|PetaExpress云端数据库

    数据库和普通数据库区别? 一、数据库和普通数据库的特点 1、
    的头像 发表于 08-01 17:13 1080次阅读