一、概述

云数据库是一款端云协同的产品,对于端云数据的协同管理。

角色和权限

角色

角色 query upsert

delete

所有人
认证用户
数据创建者
管理员

                        注:可以根据实际需求更改权限

权限

  • query(查询)
  • upsert(增和改)
  • delete(删)

二、初始化云数据库AppGallery Connect(AGC)

AppGallery Connect(AGC)

步骤一、开发AGC网站,进入到开发与服务中>选择需要端云一体化的项目

步骤二、点击左侧的云数据库开通云数据库服务

注:数据处理位置默认选择中国

步骤三、新建所需的对象类型、存储区

对象类型

注:默认每种对象类型都会附带id属性并且id为自增属性是每个对象的唯一标识

注:个人理解索引是可选项可以根据自己的需求,决定是否需要索引

注:选择数据权限,根据自身需求决定

存储区

导出两个必要文件
        agconnect-services.json文件

        schema.json文件


注:导出的文件需要重命名,并且每次对象类型版本发生改变是需要重新更新schema.json

留存Client ID

注:Client ID需要留存后续需要配置

步骤三、端侧调用云数据库

前提

TODO:添加环境依赖

//  entry目录下的oh-package.json5
//  路径  entry/oh-package.json5
//  添加依赖
"dependencies": {
    "@hw-agconnect/auth": "^1.0.5"
  }

TODO:开通网络权限

// 文件名:module.json5
// 路径:src/main/module.json5
  "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET" // 网络权限
      },
    ]

TODO:配置client_id

//  文件名 module.json5  
//  路径  entry/src/main/module.json5 
//配置client_id
    "metadata": [{
      "name": "client_id",
      "value": "项目应用的Client ID"
    }]

TODO:在hap模块(一般为entry)导入agconnect-services.json文件和schema.json文件

TODO:初始化云端数据库

// 路径 entry/src/main/ets/entryability/EntryAbility.ets
//初始化云端数据库
onCreate(){
 /**
   *  原有代码省略
   */
let file = this.context.resourceManager.getRawFileContentSync('agconnect-services.json');
    let json: string = buffer.from(file.buffer).toString();
    auth.init(this.context, json);
}
    

TODO:新建数据库对象类型文件(本次以 cloud.ets为例)

//路径 entry/src/main/ets/viewmodels/cloud.ets
class User {
  public id: number | undefined;
  public name: string | undefined;  //类型要和云数据库中对应的对象类型一致

  public naturalbase_ClassName(): string {
    return "User";
  }
}
export {User}

步骤四、读取云数据库方法

export const xxxxx =async  () => {
  try {
    const db=await cloudDatabase.zone('存储区名称')
    const condition = new cloudDatabase.DatabaseQuery(数据库对象类型)
    const list =await db.query(condition)
    if (list.length) {
      return list
    }
      return Promise.reject(new Error('读取数据库失败'))
  }catch (error) {
    AlertDialog.show({ message: error.message })
    return Promise.reject(error)
  }
}

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐