0


使用Cloud DB构建APP 快速入门-Server篇

Java

Cloud DB提供多种云数据库数据管理方式,您可以在AppGallery Connect控制台管理数据,也可以在服务器上直接管理云侧数据库中的数据。您只需要在服务器端的服务中集成云数据库服务的Server SDK,即可调用它提供的接口,完成相关服务功能开发。Server SDK将会为您的服务器与云数据库的通讯和通讯安全提供保障。

使用Server SDK管理数据,需要完成以下准备工作:

  • 您已经在AppGallery Connect控制台上开通云数据库,并成功创建对象类型。
  • 您已经获取到示例代码,请从示例代码获取。

配置开发环境

  1. 添加认证凭据,详细请参见项目级凭据。
  2. 添加Server SDK至应用级build.gradle文件。 在<项目名>/app/build.gradle文件中dependencies部分添加Server SDK。dependencies { // 添加Cloud DB SDK implementation 'com.huawei.agconnect.server:agconnect-database-server-sdk:1.0.3.300'}
  3. 在应用级build.gradle文件中设置Java源码兼容模式为JDK1.8版本。 compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8}

添加对象类型文件

您在进行本地应用开发时,可直接将AppGallery Connect控制台上导出的java格式文件添加至本地开发环境,无需再次创建对象类型。

  1. 导出用于Server端的服务开发的java格式对象类型文件,请参见导出对象类型。
  2. 将导出的全部java格式文件添加至本地开发环境,如已存在,请覆盖原文件。文件位置:<database>/src/main/java/com/huawei/agc/clouddb/quickstart/model。

初始化

在添加对象类型文件后,您就可以开始开发Server端的服务。在开发Server端的服务前,您需要先初始化对应数据处理位置的AGCClient,并创建Cloud DB zone实例和CloudDBZoneConfig对象,设置需要进行数据操作的云侧存储区名称。

  1. 将配置开发环境中获取的认证凭据放置到您自定义的目录,并通过ClientNameEnum指定对应数据处理位置,调用getClientName方法获取初始化后的AGCClient实例。 String credentialPath = "agc-apiclient.json";AGCClient.initialize(ClientNameEnum.CLOUDDB_CN.getClientName(), AGCParameter.builder().setCredential(CredentialParser.toCredential(credentialPath)).build(), Constants.Region.REGION_CN); AGCClient初始化参数对应关系如下表。 ClientNameEnumConstants.RegionCLOUDDB_CNREGION_CNCLOUDDB_RUREGION_RUCLOUDDB_SGREGION_SGCLOUDDB_DEREGION_DE
  2. 通过getInstance(AGCClient agcClient)方法获取对应数据处理位置的AGConnectCloudDB实例。 AGCClient agcClient = AGCClient.getInstance(CLOUDDB_CN.getClientName());agConnectCloudDB = AGConnectCloudDB.getInstance(agcClient);
  3. 创建CloudDBZoneConfig配置对象,并设置云侧Cloud DB zone名称,打开Cloud DB zone实例,详细请参考CloudDBZoneConfig。 CloudDBZoneConfig cloudDBZoneConfig = new CloudDBZoneConfig("QuickStartDemo");mCloudDBZone = agConnectCloudDB.openCloudDBZone(cloudDBZoneConfig);

写入数据

在本节主要介绍如何在Server端的服务中进行数据写入操作,以便您了解如何使用Server SDK实现数据的写入。使用executeUpsert()方法实现数据的写入。BookInfo为已定义对象类型,可参见新增和导出对象类型。

public void upsertBookInfo(BookInfo bookInfo) {
    if (mCloudDBZone == null) {
        LOGGER.warn("CloudDBClient is null, try re-initialize it");
        return;
    }
    try {
        CompletableFuture<Integer> result = mCloudDBZone.executeUpsert(bookInfo);
        System.out.println(result.get());
    } catch (AGConnectCloudDBException | ExecutionException | InterruptedException e) {
        LOGGER.warn("upsertBookInfo: " + e.getMessage());
    }
}

查看数据

通过executeQuery()和get()方法的组合实现异步方式查询数据。

public void queryBooks(CloudDBZoneQuery<BookInfo> query) {
    if (mCloudDBZone == null) {
        LOGGER.warn("CloudDBClient is null, try re-initialize it");
        return;
    }
    try {
        CompletableFuture<CloudDBZoneSnapshot<BookInfo>> result = mCloudDBZone.executeQuery(query);
        CloudDBZoneSnapshot<BookInfo> snapshot = result.get();
        processQueryResult(snapshot);
    } catch (AGConnectCloudDBException | InterruptedException | ExecutionException e) {
        LOGGER.warn("queryBooks: " + e.getMessage());
    }
}

通过查询与orderByDesc()方法和limit()方法组合来实现数据的降序排序,并限制查询数据显示条数。

private void queryWithOrder() {
    CloudDBZoneQuery<BookInfo> query = CloudDBZoneQuery.where(BookInfo.class);
    try {
        query.orderByDesc("price");
        query.limit(10);
        CompletableFuture<CloudDBZoneSnapshot<BookInfo>> result = mCloudDBZone.executeQuery(query);
        processQueryResult(result.get());
    } catch (AGConnectCloudDBException | InterruptedException | ExecutionException e) {
        LOGGER.warn("queryWithOrder: " + e.getMessage());
    }
}

JavaScript

Cloud DB提供多种云数据库数据管理方式,您可以在AppGallery Connect控制台管理数据,也可以在服务器上直接管理云侧数据库中的数据。您只需要在服务器端的服务中集成云数据库服务的Server SDK,即可调用它提供的接口,完成相关服务功能开发。Server SDK将会为您的服务器与云数据库的通讯和通讯安全提供保障。

使用Server SDK管理数据,需要完成以下准备工作:

  • 您已经在AppGallery Connect控制台上开通云数据库,并成功创建对象类型。
  • 您已经获取到示例代码,请从示例代码获取。

配置开发环境

  1. 添加认证凭据,详细请参见项目级凭据。
  2. 执行以下命令,安装Server SDK到您的项目中,并将依赖添加到您项目中的package.json文件中。 npm install --save @agconnect/database-server
  3. 在您项目中导入AGC模块。 const clouddb = require('@agconnect/database-server/dist/index.js');const agconnect = require('@agconnect/common-server');

添加对象类型文件

您在进行本地应用开发时,可直接将AppGallery Connect控制台上导出的js格式文件添加至本地开发环境,无需再次创建对象类型。

  1. 导出用于Server端的服务开发的js格式对象类型文件,请参见导出对象类型。
  2. 将导出的全部js格式文件添加至本地开发环境,如已存在,请覆盖原文件。文件位置:<database>/src/model。

初始化

在添加对象类型文件后,您就可以开始开发Server端的服务。在开发Server端的服务前,您需要先初始化AGCClient,并设置需要进行数据操作的云侧存储区名称,获取存储区实例。

  1. 将配置开发环境中获取的认证凭据放置到您自定义的目录,并初始化AGCClient实例。 const credentialPath = "resource\\agc-apiclient-xxxx.json";agconnect.AGCClient.initialize(agconnect.CredentialParser.toCredential(credentialPath));const agcClient = agconnect.AGCClient.getInstance();
  2. 通过getInstance()方法初始化AGConnectCloudDB实例。 clouddb.AGConnectCloudDB.initialize(agcClient);
  3. 创建CloudDBZoneConfig配置对象,并设置云侧Cloud DB zone名称,打开Cloud DB zone实例,详细请参考CloudDBZoneConfig。 const zoneName = 'QuickStartDemo';const cloudDBZoneConfig = new clouddb.CloudDBZoneConfig(zoneName);const mCloudDBZone = clouddb.AGConnectCloudDB.getInstance().openCloudDBZone(cloudDBZoneConfig);

写入数据

在本节主要介绍如何在Server端的服务中进行数据写入操作,以便您了解如何使用Server SDK实现数据的写入。使用executeUpsert()方法实现数据的写入。BookInfo为已定义对象类型,可参见新增和导出对象类型。

async upsertBookInfos(bookInfo) {
    if (!this.mCloudDBZone) {
        console.log("CloudDBClient is null, try re-initialize it");
        return;
    }
    try {
        const resp = await this.mCloudDBZone.executeUpsert(bookInfo);
    } catch (error) {
        console.warn('upsertBookInfo=>', error)
    }
}

查看数据

通过executeQuery()查询数据。

async queryBooks(cloudDBZoneQuery) {
    if (!this.mCloudDBZone) {
        console.log("CloudDBClient is null, try re-initialize it");
        return;
    }
    try {
        const resp = await this.mCloudDBZone.executeQuery(cloudDBZoneQuery);
        this.processQueryResult(resp.getSnapshotObjects());
    } catch (error) {
        console.warn('queryBooks=>', error)
    }
}

通过查询与orderByDesc()方法和limit()方法组合来实现数据的降序排序,并限制查询数据显示条数。

async queryBooksWithOrder() {
    if (!this.mCloudDBZone) {
        console.log("CloudDBClient is null, try re-initialize it");
        return;
    }
    try {
        const cloudDBZoneQuery = clouddb.CloudDBZoneQuery.where(BookInfo).orderByDesc("price").limit(3);
        const resp = await this.mCloudDBZone.executeQuery(cloudDBZoneQuery);
        this.processQueryResult(resp.getSnapshotObjects());
    } catch (error) {
        console.warn('queryBooks=>', error)
    }
}
标签: 数据库 database

本文转载自: https://blog.csdn.net/GaussDB/article/details/123323538
版权归原作者 Gauss松鼠会 所有, 如有侵权,请联系我们删除。

“使用Cloud DB构建APP 快速入门-Server篇”的评论:

还没有评论