当前位置:网站首页>使用Cloud DB构建APP 快速入门-Server篇
使用Cloud DB构建APP 快速入门-Server篇
2022-06-11 15:36:00 【Gauss松鼠会】
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实例。
AGCClient初始化参数对应关系如下表。String credentialPath = "agc-apiclient.json"; AGCClient.initialize(ClientNameEnum.CLOUDDB_CN.getClientName(), AGCParameter.builder() .setCredential(CredentialParser.toCredential(credentialPath)) .build(), Constants.Region.REGION_CN);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)
}
}边栏推荐
- Charles automatically saves response data
- Hebei huangjinzhai scenic spot adds "AED automatic defibrillator" to ensure the life safety of tourists!
- Flower shop window (linear DP)
- [系统安全] 四十二.Powershell恶意代码检测系列 (4)论文总结及抽象语法树(AST)提取
- Don't you understand the design and principle of thread pool? Break it up and crush it. I'll teach you how to design the thread pool
- Talk about the principle of QR code scanning login
- 我的代码变量名称统一 记录
- File is in use and cannot be renamed solution
- The reason why it is easy to let the single chip computer program fly
- Uniapp develops wechat applet from build to launch
猜你喜欢
随机推荐
MOS transistor 24n50 parameters of asemi, 24n50 package, 24n50 size
数据分析系统的设计与实现
openGauss数据库闪回功能验证
见微知著,细节上雕花:SVG生成矢量格式网站图标(Favicon)探究
Introduction to thread practice [hard core careful entry!]
openGauss AI能力升级,打造全新的AI-Native数据库
PHP Apache built-in stress testing tool AB (APACHE bench)
In June, 2019, cat teacher's report on monitoring
uniapp開發微信小程序,從構建到上線
容易让单片机程序跑飞的原因
openGauss 多线程架构启动过程详解
[creation mode] builder mode
The server prevents repeated payment of orders
From 0 to 1, master the mainstream technology of large factories steadily. Isn't it necessary to increase salary after one year?
Cf662b graph coloring problem solution
Performance of MOS transistor 25n120 of asemi in different application scenarios
Kaixia was selected into the 2022 global top 100 innovation institutions list of Kerui Weian
The most egregious error set of tone codes
Devil cold rice # 037 devil shares the ways to become a big enterprise; Female anchor reward routine; Self discipline means freedom; Interpretation of simple interest and compound interest
河北 黄金寨景区新增“AED自动除颤器”保障游客生命安全!








