0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

DevEco Studio端云協(xié)同之云數(shù)據(jù)庫

ITMING ? 來源:ITMING ? 作者:ITMING ? 2023-02-23 14:29 ? 次閱讀

在自定義HamronyOS啟動頁組件一文中封裝了啟動頁組件,本節(jié)將結合端云協(xié)同開發(fā),將啟動頁需要的參數(shù)保存到云數(shù)據(jù)庫中,實現(xiàn)根據(jù)特定節(jié)氣顯示不同的啟動頁背景圖。

1 環(huán)境

  • DevEco Studio 3.1 Beta1(V3.1.0.200)
  • 觸覺智能IDO-EVB3568-V1開發(fā)板
  • 自定義teui組件庫
  • 端云協(xié)同開發(fā)應用創(chuàng)建

2 云數(shù)據(jù)庫

云數(shù)據(jù)庫(Cloud DB)是Serverless服務提供的能力之一,是AppGallery Connect平臺解決方案的一部分,是端云協(xié)同的數(shù)據(jù)庫產(chǎn)品,支持數(shù)據(jù)在端云、多端之間無縫同步,并為應用提供離線支持,以幫助開發(fā)者快速構建端云、多端協(xié)同應用,開發(fā)者可以聚集于應用本身業(yè)務,極大提升開發(fā)者開發(fā)效率,更多請至華為App Gallery Connect云數(shù)據(jù)庫了解。

3 端云協(xié)同開發(fā)云數(shù)據(jù)庫

DevEco Studio 3.1 Beta1提供了端云協(xié)同開發(fā),可以通過云側(cè)CloudProgram項目創(chuàng)建云數(shù)據(jù)庫對象類型、存儲區(qū)、配置權限,端側(cè)引入相關的云數(shù)據(jù)庫文件即可進行云數(shù)據(jù)庫數(shù)據(jù)操作,應用開發(fā)流程如下圖所示:

3.1 云側(cè)CloudProgram工程云數(shù)據(jù)庫配置

3.1.1 創(chuàng)建對象類型

云數(shù)據(jù)庫采用存儲區(qū)、對象類型和對象三級結構基于對象模型的數(shù)據(jù)庫。對象類型是用于定義存儲對象的集合,不同對象類型對應的不同數(shù)據(jù)結構。

在云側(cè)CloudProgram工程clouddb目錄下clouddb目錄右鍵New > Cloud DB Object Type創(chuàng)建對象類型,輸入對象類型名稱,DevEco Studio會自動創(chuàng)建初始對象類型JSON文件。

在對象類型JSON文件中,可以配置字段、索引以及角色于權限,表3-1為數(shù)據(jù)類型JSON文件屬性簡單介紹。

表3-1 數(shù)據(jù)類型JSON文件屬性(更多描述參見官方文檔)

參數(shù) 說明
fields 數(shù)據(jù)表字段集,配置屬性參見表3-2
indexes 數(shù)據(jù)表索引,配置屬性參見表3-3
permissions 操作數(shù)據(jù)表角色及對應權限,配置屬性參見表3-4
objectTypeName 數(shù)據(jù)表名稱

表3-2 數(shù)據(jù)表字段(更多描述參見官方文檔)

參數(shù) 說明
fieldName 字段名稱
fieldType 字段數(shù)據(jù)類型 當前支持: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 數(shù)據(jù)表索引(更多描述參見官方文檔)

參數(shù) 說明
indexName 索引名稱
indexList 索引包含的字段
"indexes": [
    {
      "indexName": "IDX_202302221057",
      "indexList": [
        {
          "fieldName": "id",
          "sortType": "DESC"
        }
      ]
    }
  ],

表3-4 操作數(shù)據(jù)表角色及權限(更多描述參見官方文檔)

參數(shù) 說明
World 所有用戶,默認最多僅可擁有Read權限
Authenticated AppGallery Connect登錄的認證用戶
Creator 數(shù)據(jù)創(chuàng)建用戶
Administrator 應用開發(fā)者
"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 創(chuàng)建數(shù)據(jù)條目

創(chuàng)建完對象類型,可以通過為對象類型添加數(shù)據(jù)條目,來預置數(shù)據(jù)庫內(nèi)容,支持手動創(chuàng)建和自動生成數(shù)據(jù)條目JSON文件。

  • 手動創(chuàng)建數(shù)據(jù)條目文件:在clouddb目錄下dataentry目錄右鍵New > Cloud DB Data Entry創(chuàng)建數(shù)據(jù)條目JSON文件,輸入數(shù)據(jù)條目名稱。
  • 自動生成數(shù)據(jù)條目文件:在對象類型JSON文件右鍵Generate Data Entry輸入數(shù)據(jù)條目自定義名稱。

無論選擇哪種創(chuàng)建數(shù)據(jù)條目的方法,DevEco Studio會自動初始化已配置的對象類型,并賦初始值,同時配置數(shù)據(jù)條目所在存儲區(qū)名稱,如代碼中的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 部署云數(shù)據(jù)庫

在DevEco Studio還未實現(xiàn)端云協(xié)同開發(fā)之前,要實現(xiàn)云側(cè)數(shù)據(jù)庫需要在網(wǎng)頁端配置。當前開發(fā)者只需要在DevEco Studio云側(cè)工程中配置好云數(shù)據(jù)庫信息后,右鍵clouddb目錄選擇Deploy Cloud DB將云數(shù)據(jù)庫需要的資源統(tǒng)一部署到AGC控制臺,Event Log會顯示同步進度信息。部署完成后,可在AGC控制臺查看部署的云數(shù)據(jù)庫信息。

3.2 端側(cè)Application訪問云側(cè)數(shù)據(jù)庫業(yè)務實現(xiàn)

使用端云協(xié)同開發(fā),將較于之前的操作會減少如配置開發(fā)環(huán)境agconnect-services.json文件引入,該文件在創(chuàng)建端云協(xié)同工程時會自動初始化到工程中,在entry/src/main/resources/rawfile中;同時會自動引入相關依賴文件,如database-ohos等。

除配置文件和依賴文件之外,還需要和之前的操作相同,導出JSON格式文件和JS格式文件并添加至本地開發(fā)環(huán)境中。

3.2.1 添加對象類型文件

  • 將導出的數(shù)據(jù)類型JSON文件內(nèi)容拷貝到entry/src/main/ets/services/app-schema.json中,若無該文件則創(chuàng)建即可。
  • 將導出的JS格式文件拷貝到entry/src/main/ets/services/目錄下。

3.2.2 云數(shù)據(jù)庫操作

該文件僅作為示例應用獲取云數(shù)據(jù)庫數(shù)據(jù),若需要更詳細的開發(fā)者可自定義封裝,其中異常并未作處理,開發(fā)者可根據(jù)自身業(yè)務做響應的處理。

// 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 將云數(shù)據(jù)庫數(shù)據(jù)渲染到頁面

利用aboutToAppear()方法獲取云數(shù)據(jù)庫中的啟動頁信息。

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() {
    // 跳轉(zhuǎn)頁面
  }
  
  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() {
    // 若受網(wǎng)絡印象獲取數(shù)據(jù)時間過長,此處可以自定義一個數(shù)據(jù)加載動畫
    CloudDB.query(getContext(this)).then(ret => {
      this.isSkip = true;
      this.result = ret;
    })
  }
}

3.3 在開發(fā)板預覽效果

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • serverless
    +關注

    關注

    0

    文章

    64

    瀏覽量

    4485
  • 云數(shù)據(jù)庫

    關注

    0

    文章

    18

    瀏覽量

    1895
  • DevEco Studio
    +關注

    關注

    0

    文章

    19

    瀏覽量

    987
  • HarmonyOS3
    +關注

    關注

    0

    文章

    37

    瀏覽量

    968
收藏 人收藏

    評論

    相關推薦

    數(shù)據(jù)庫SQL Server 2008 R2版推出OSS版本數(shù)據(jù)

    摘要: 日前,阿里數(shù)據(jù)庫SQL Server 2008 R2版開放了新的數(shù)據(jù)功能,用戶只需把本地數(shù)據(jù)庫的備份文件上傳到阿里
    發(fā)表于 01-17 11:10

    數(shù)據(jù)庫廠商都怕低價競爭?阿里說并不可懼

    摘要: 2017年Gartner發(fā)布的數(shù)據(jù)庫廠商推薦報告中首次收錄了來自中國的數(shù)據(jù)庫廠商,分別是阿里、巨杉數(shù)據(jù)庫SequoiaDB以及南大通用GBase。在這三家廠商中,巨杉
    發(fā)表于 05-11 11:02

    阿里數(shù)據(jù)庫備份DBS商業(yè)化發(fā)布,數(shù)據(jù)庫實時備份到OSS

    摘要: 數(shù)據(jù)庫備份DBS作為一款阿里產(chǎn)品,專注于阿里范疇數(shù)據(jù)庫的一站式保護,已于2018年5月17日正式商業(yè)化發(fā)布。數(shù)據(jù)庫備份DBS已于
    發(fā)表于 05-30 17:49

    DevEco Studio 3.1 Beta新特性知多少

    協(xié)同開發(fā) DevEco Studio提供的一體化開發(fā)功能,支持側(cè)、
    發(fā)表于 04-23 11:06

    HarmonyOS元服務一體化開發(fā)快速入門(下)

    服務(認證服務、函數(shù)、存儲)最新版本HarmonyOS SDK,同時會自動集成一體化登錄組件的最新SDK。 ** 3. 側(cè)工程自
    發(fā)表于 06-15 15:52

    鴻蒙原生應用/元服務開發(fā)-新版本一體化模板體驗反饋

    Ability模板即可。 三、體驗 新增: 最新一體化新增“數(shù)據(jù)庫一體組件”, 版本
    發(fā)表于 12-05 14:57

    阿里數(shù)據(jù)庫MongoDB版架構及安全解讀

    12月18日,阿里100%兼容MongoDB的數(shù)據(jù)庫AliCloudDB for MongoDB宣布開放公測,基于三節(jié)點副本集的高可用框架,阿里
    發(fā)表于 10-13 11:21 ?0次下載
    阿里<b class='flag-5'>云</b><b class='flag-5'>數(shù)據(jù)庫</b>MongoDB版架構及安全解讀

    數(shù)據(jù)庫是未來的數(shù)據(jù)庫商業(yè)的成功,卻是技術的倒退

    在越來越多的會議、媒體、文章、報道上看到一種說法:“未來的數(shù)據(jù)庫數(shù)據(jù)庫的時代,數(shù)據(jù)庫廠商終將取代傳統(tǒng)
    的頭像 發(fā)表于 10-14 15:51 ?2056次閱讀
    <b class='flag-5'>云</b><b class='flag-5'>數(shù)據(jù)庫</b>是未來的<b class='flag-5'>數(shù)據(jù)庫</b>商業(yè)的成功,卻是技術的倒退

    數(shù)據(jù)庫和自建數(shù)據(jù)庫的區(qū)別及應用

    數(shù)據(jù)庫是指優(yōu)化和部署在云端的數(shù)據(jù)庫,阿里云和騰訊都提供數(shù)據(jù)庫,
    的頭像 發(fā)表于 11-20 16:26 ?4435次閱讀
    <b class='flag-5'>云</b><b class='flag-5'>數(shù)據(jù)庫</b>和自建<b class='flag-5'>數(shù)據(jù)庫</b>的區(qū)別及應用

    騰訊數(shù)據(jù)庫生態(tài)經(jīng) 騰訊數(shù)據(jù)庫生態(tài)戰(zhàn)略

    數(shù)據(jù)庫是最重要的基礎服務之一,已經(jīng)成為服務商的核心競爭力之一,屬于兵家必爭之地。廠商要想取得成功,數(shù)據(jù)庫之爭不容有失,一個典型的例子,
    發(fā)表于 12-30 11:24 ?491次閱讀

    數(shù)據(jù)庫之戰(zhàn)下半場,騰訊數(shù)據(jù)庫打的更有侵略性

    文/老魚 數(shù)據(jù)庫上半場,是線上市場(公有)之爭,目前大局已定,阿里以絕對優(yōu)勢領跑。如今,數(shù)據(jù)庫
    的頭像 發(fā)表于 01-10 21:50 ?1816次閱讀
    <b class='flag-5'>云</b><b class='flag-5'>數(shù)據(jù)庫</b>之戰(zhàn)下半場,騰訊<b class='flag-5'>云</b><b class='flag-5'>數(shù)據(jù)庫</b>打的更有侵略性

    華為數(shù)據(jù)庫-RDS for MySQL數(shù)據(jù)庫

    華為數(shù)據(jù)庫-RDS for MySQL數(shù)據(jù)庫 華為數(shù)據(jù)庫作為華為的一款
    的頭像 發(fā)表于 10-27 11:06 ?1346次閱讀

    華為數(shù)據(jù)庫\-GaussDB for MySQL數(shù)據(jù)庫

    華為數(shù)據(jù)庫-GaussDB for MySQL數(shù)據(jù)庫 GaussDB是華為自主研發(fā)的一款高性能關系型數(shù)據(jù)庫,它完全兼容了MySQL,而且
    的頭像 發(fā)表于 10-27 14:56 ?1119次閱讀

    數(shù)據(jù)庫已成趨勢,華為數(shù)據(jù)庫與傳統(tǒng)數(shù)據(jù)庫對比解析

    ,并不適合海量數(shù)據(jù)存儲,并且裝載的速度慢。舉個例子,當傳統(tǒng)索引需要重新創(chuàng)建,加載的性能就會大幅度下降。為了解決此類問題,華為數(shù)據(jù)庫應運而生。 與傳統(tǒng)數(shù)據(jù)庫不同的是,華為
    的頭像 發(fā)表于 12-27 16:52 ?938次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b>上<b class='flag-5'>云</b>已成趨勢,華為<b class='flag-5'>云</b><b class='flag-5'>數(shù)據(jù)庫</b>與傳統(tǒng)<b class='flag-5'>數(shù)據(jù)庫</b>對比解析

    數(shù)據(jù)庫和普通數(shù)據(jù)庫區(qū)別?|PetaExpress云端數(shù)據(jù)庫

    數(shù)據(jù)庫和普通數(shù)據(jù)庫區(qū)別? 一、數(shù)據(jù)庫和普通數(shù)據(jù)庫的特點 1、
    的頭像 發(fā)表于 08-01 17:13 ?931次閱讀