Java
Cloud DB提供多种云数据库数据管理方式,您可以在AppGallery Connect控制台管理数据,也可以在服务器上直接管理云侧数据库中的数据。您只需要在服务器端的服务中集成云数据库服务的Server SDK,即可调用它提供的接口,完成相关服务功能开发。Server SDK将会为您的服务器与云数据库的通讯和通讯安全提供保障。
使用Server SDK管理数据,需要完成以下准备工作:
- 您已经在AppGallery Connect控制台上开通云数据库,并成功创建对象类型。
- 您已经获取到示例代码,请从示例代码获取。
配置开发环境
- 添加认证凭据,详细请参见项目级凭据。
- 添加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'
} - 在应用级build.gradle文件中设置Java源码兼容模式为JDK1.8版本。
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
添加对象类型文件
您在进行本地应用开发时,可直接将AppGallery Connect控制台上导出的java格式文件添加至本地开发环境,无需再次创建对象类型。
- 导出用于Server端的服务开发的java格式对象类型文件,请参见导出对象类型。
- 将导出的全部java格式文件添加至本地开发环境,如已存在,请覆盖原文件。文件位置:<database>/src/main/java/com/huawei/agc/clouddb/quickstart/model。
初始化
在添加对象类型文件后,您就可以开始开发Server端的服务。在开发Server端的服务前,您需要先初始化对应数据处理位置的AGCClient,并创建Cloud DB zone实例和CloudDBZoneConfig对象,设置需要进行数据操作的云侧存储区名称。
- 将配置开发环境中获取的认证凭据放置到您自定义的目录,并通过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 |
- 通过getInstance(AGCClient agcClient)方法获取对应数据处理位置的AGConnectCloudDB实例。
AGCClient agcClient = AGCClient.getInstance(CLOUDDB_CN.getClientName());
agConnectCloudDB = AGConnectCloudDB.getInstance(agcClient); - 创建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控制台上开通云数据库,并成功创建对象类型。
- 您已经获取到示例代码,请从示例代码获取。
配置开发环境
- 添加认证凭据,详细请参见项目级凭据。
- 执行以下命令,安装Server SDK到您的项目中,并将依赖添加到您项目中的package.json文件中。
npm install --save @agconnect/database-server - 在您项目中导入AGC模块。
const clouddb = require('@agconnect/database-server/dist/index.js');
const agconnect = require('@agconnect/common-server');
添加对象类型文件
您在进行本地应用开发时,可直接将AppGallery Connect控制台上导出的js格式文件添加至本地开发环境,无需再次创建对象类型。
- 导出用于Server端的服务开发的js格式对象类型文件,请参见导出对象类型。
- 将导出的全部js格式文件添加至本地开发环境,如已存在,请覆盖原文件。文件位置:<database>/src/model。
初始化
在添加对象类型文件后,您就可以开始开发Server端的服务。在开发Server端的服务前,您需要先初始化AGCClient,并设置需要进行数据操作的云侧存储区名称,获取存储区实例。
- 将配置开发环境中获取的认证凭据放置到您自定义的目录,并初始化AGCClient实例。
const credentialPath = "resource\\agc-apiclient-xxxx.json";
agconnect.AGCClient.initialize(agconnect.CredentialParser.toCredential(credentialPath));
const agcClient = agconnect.AGCClient.getInstance(); - 通过getInstance()方法初始化AGConnectCloudDB实例。
clouddb.AGConnectCloudDB.initialize(agcClient); - 创建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)
}
}
|