使用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初始化参数对应关系如下表。

    ClientNameEnum

    Constants.Region

    CLOUDDB_CN

    REGION_CN

    CLOUDDB_RU

    REGION_RU

    CLOUDDB_SG

    REGION_SG

    CLOUDDB_DE

    REGION_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)
    }
}
  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gauss松鼠会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值