diff --git a/zh-cn/application-dev/reference/apis/js-apis-distributedKVStore.md b/zh-cn/application-dev/reference/apis/js-apis-distributedKVStore.md
index fd454e54894a12cbbf2b8f38d9092551dd09b074..7a7a4d036c9e2f831cc26bff6a285ef10c895fa3 100644
--- a/zh-cn/application-dev/reference/apis/js-apis-distributedKVStore.md
+++ b/zh-cn/application-dev/reference/apis/js-apis-distributedKVStore.md
@@ -42,7 +42,7 @@ import distributedKVStore from '@ohos.data.distributedKVStore';
| --------------------- | ------- | --------------------------------------- |
| MAX_KEY_LENGTH | 1024 | 数据库中Key允许的最大长度,单位字节。 |
| MAX_VALUE_LENGTH | 4194303 | 数据库中Value允许的最大长度,单位字节。 |
-| MAX_KEY_LENGTH_DEVICE | 896 | 最大设备密钥长度,单位字节。 |
+| MAX_KEY_LENGTH_DEVICE | 896 | 设备协同数据库中key允许的最大长度,单位字节。 |
| MAX_STORE_ID_LENGTH | 128 | 数据库标识符允许的最大长度,单位字节。 |
| MAX_QUERY_LENGTH | 512000 | 最大查询长度,单位字节。 |
| MAX_BATCH_SIZE | 128 | 最大批处理操作数量。 |
@@ -138,10 +138,10 @@ import distributedKVStore from '@ohos.data.distributedKVStore';
| 名称 | 说明 |
| -------: | ------------------------------------------------------------ |
-| S1 | 表示数据库的安全级别为低级别,当数据泄露时会产生较低影响。例如,包含壁纸等系统数据的数据库。 |
-| S2 | 表示数据库的安全级别为中级别,当数据泄露时会产生较大影响。例如,包含录音、视频等用户生成数据或通话记录等信息的数据库。 |
-| S3 | 表示数据库的安全级别为高级别,当数据泄露时会产生重大影响。例如,包含用户运动、健康、位置等信息的数据库。 |
-| S4 | 表示数据库的安全级别为关键级别,当数据泄露时会产生严重影响。例如,包含认证凭据、财务数据等信息的数据库。 |
+| S1 | 表示数据库的安全级别为低级别,数据的泄露、篡改、破坏、销毁可能会给个人或组织导致有限的不利影响。
例如,性别、国籍,用户申请记录等。 |
+| S2 | 表示数据库的安全级别为中级别,数据的泄露、篡改、破坏、销毁可能会给个人或组织导致严重的不利影响。
例如,个人详细通信地址,姓名昵称等。 |
+| S3 | 表示数据库的安全级别为高级别,数据的泄露、篡改、破坏、销毁可能会给个人或组织导致严峻的不利影响。
例如,个人实时精确定位信息、运动轨迹等。 |
+| S4 | 表示数据库的安全级别为关键级别,业界法律法规中定义的特殊数据类型,涉及个人的最私密领域的信息或者一旦泄露、篡改、破坏、销毁可能会给个人或组织造成重大的不利影响数据。
例如,政治观点、宗教、和哲学信仰、工会成员资格、基因数据、生物信息、健康和性生活状况、性取向等或设备认证鉴权、个人的信用卡等财务信息。 |
## Options
@@ -227,13 +227,12 @@ appendChild(child: FieldNode): boolean
**示例:**
```js
-import ddm from '@ohos.data.distributedKVStore';
try {
- let node = new ddm.FieldNode("root");
- let child1 = new ddm.FieldNode("child1");
- let child2 = new ddm.FieldNode("child2");
- let child3 = new ddm.FieldNode("child3");
+ let node = new distributedKVStore.FieldNode("root");
+ let child1 = new distributedKVStore.FieldNode("child1");
+ let child2 = new distributedKVStore.FieldNode("child2");
+ let child3 = new distributedKVStore.FieldNode("child3");
node.appendChild(child1);
node.appendChild(child2);
node.appendChild(child3);
@@ -456,6 +455,8 @@ try {
}
console.info('Succeeded in getting KVStore');
kvStore = store;
+ kvStore = null;
+ store = null;
kvManager.closeKVStore('appId', 'storeId', function (err, data) {
if (err != undefined) {
console.error(`Failed to close KVStore.code is ${err.code},message is ${err.message}`);
@@ -506,6 +507,8 @@ try {
kvManager.getKVStore('storeId', options).then(async (store) => {
console.info('Succeeded in getting KVStore');
kvStore = store;
+ kvStore = null;
+ store = null;
kvManager.closeKVStore('appId', 'storeId').then(() => {
console.info('Succeeded in closing KVStore');
}).catch((err) => {
@@ -563,6 +566,8 @@ try {
}
console.info('Succeeded in getting KVStore');
kvStore = store;
+ kvStore = null;
+ store = null;
kvManager.deleteKVStore('appId', 'storeId', function (err, data) {
if (err != undefined) {
console.error(`Failed to delete KVStore.code is ${err.code},message is ${err.message}`);
@@ -621,6 +626,8 @@ try {
kvManager.getKVStore('storeId', options).then(async (store) => {
console.info('Succeeded in getting KVStore');
kvStore = store;
+ kvStore = null;
+ store = null;
kvManager.deleteKVStore('appId', 'storeId').then(() => {
console.info('Succeeded in deleting KVStore');
}).catch((err) => {
@@ -706,7 +713,7 @@ try {
on(event: 'distributedDataServiceDie', deathCallback: Callback<void>): void
-订阅服务状态变更通知。
+订阅服务状态变更通知。如果服务终止,需要重新注册数据变更通知和同步完成事件回调通知,并且同步操作会返回失败。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
@@ -735,7 +742,7 @@ try {
off(event: 'distributedDataServiceDie', deathCallback?: Callback<void>): void
-取消订阅服务状态变更通知。
+取消订阅服务状态变更通知。参数中的deathCallback必须是已经订阅过的deathCallback,否则会取消订阅失败,如果deathCallback没有入参,那么会将之前订阅过的所有的deathCallback取消订阅。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
@@ -785,14 +792,15 @@ getCount(): number
```js
try {
let resultSet;
+ let count;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ count = resultSet.getCount();
+ console.info("getCount succeed:" + count);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const count = resultSet.getCount();
- console.info("getCount succeed:" + count);
} catch (e) {
console.error("getCount failed: " + e);
}
@@ -802,7 +810,7 @@ try {
getPosition(): number
-获取结果集中当前的读取位置。
+获取结果集中当前的读取位置。读取位置会因[moveToFirst](#moveToFirst)、[moveToLast](#moveToLast)等操作而发生变化。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
@@ -810,21 +818,22 @@ getPosition(): number
| 类型 | 说明 |
| ------ | ------------------ |
-| number | 返回当前读取位置。 |
+| number | 返回当前读取位置。取值范围>= -1,值为 -1 时表示还未开始读取,值为 0 时表示第一行。 |
**示例:**
```js
try {
let resultSet;
+ let position;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeeded.');
resultSet = result;
+ position = resultSet.getPosition();
+ console.info("getPosition succeed:" + position);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const position = resultSet.getPosition();
- console.info("getPosition succeed:" + position);
} catch (e) {
console.error("getPosition failed: " + e);
}
@@ -849,14 +858,15 @@ moveToFirst(): boolean
```js
try {
let resultSet;
+ let moved;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ moved = resultSet.moveToFirst();
+ console.info("moveToFirst succeed: " + moved);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const moved1 = resultSet.moveToFirst();
- console.info("moveToFirst succeed: " + moved1);
} catch (e) {
console.error("moveToFirst failed " + e);
}
@@ -881,14 +891,15 @@ moveToLast(): boolean
```js
try {
let resultSet;
+ let moved;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ moved = resultSet.moveToLast();
+ console.info("moveToLast succeed:" + moved);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const moved2 = resultSet.moveToLast();
- console.info("moveToLast succeed:" + moved2);
} catch (e) {
console.error("moveToLast failed: " + e);
}
@@ -898,7 +909,7 @@ try {
moveToNext(): boolean
-将读取位置移动到下一行。如果结果集为空,则返回false。
+将读取位置移动到下一行。如果结果集为空,则返回false。适用于全量获取数据库结果集的场景。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
@@ -913,14 +924,17 @@ moveToNext(): boolean
```js
try {
let resultSet;
+ let moved;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ do {
+ moved = resultSet.moveToNext();
+ console.info("moveToNext succeed: " + moved);
+ } while (moved)
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const moved3 = resultSet.moveToNext();
- console.info("moveToNext succeed: " + moved3);
} catch (e) {
console.error("moveToNext failed: " + e);
}
@@ -930,7 +944,7 @@ try {
moveToPrevious(): boolean
-将读取位置移动到上一行。如果结果集为空,则返回false。
+将读取位置移动到上一行。如果结果集为空,则返回false。适用于全量获取数据库结果集的场景。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
@@ -945,14 +959,16 @@ moveToPrevious(): boolean
```js
try {
let resultSet;
+ let moved;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ moved = resultSet.moveToLast();
+ moved = resultSet.moveToPrevious();
+ console.info("moveToPrevious succeed:" + moved);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const moved4 = resultSet.moveToPrevious();
- console.info("moveToPrevious succeed:" + moved4);
} catch (e) {
console.error("moveToPrevious failed: " + e);
}
@@ -962,7 +978,7 @@ try {
move(offset: number): boolean
-将读取位置移动到当前位置的相对偏移量。
+将读取位置移动到当前位置的相对偏移量。即当前游标位置向下偏移 offset 行。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
@@ -983,14 +999,20 @@ move(offset: number): boolean
```js
try {
let resultSet;
+ let moved;
+ let position = -1;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('Succeeded in getting resultSet');
resultSet = result;
+ while (position != 3) {
+ moved = resultSet.moveToNext();
+ position = resultSet.getPosition();
+ }
+ moved = resultSet.move(2); //将读取位置从绝对位置为3的位置移动2行,即移动到绝对位置为5,行数为6的位置
+ console.info(`Succeeded in moving.moved = ${moved}`);
}).catch((err) => {
console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
});
- const moved5 = resultSet.move(1);
- console.info(`Succeeded in moving.moved5 = ${moved5}`);
} catch (e) {
console.error(`Failed to move.code is ${e.code},message is ${e.message}`);
}
@@ -1021,14 +1043,15 @@ moveToPosition(position: number): boolean
```js
try {
let resultSet;
+ let moved;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('Succeeded in getting resultSet');
resultSet = result;
+ moved = resultSet.moveToPosition(1);
+ console.info(`Succeeded in moving to position.moved=${moved}`);
}).catch((err) => {
console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
});
- const moved6 = resultSet.moveToPosition(1);
- console.info(`Succeeded in moving to position.moved6=${moved6}`);
} catch (e) {
console.error(`Failed to move to position.code is ${e.code},message is ${e.message}`);
}
@@ -1053,14 +1076,15 @@ isFirst(): boolean
```js
try {
let resultSet;
+ let isfirst;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ isfirst = resultSet.isFirst();
+ console.info("Check isFirst succeed:" + isfirst);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const isfirst = resultSet.isFirst();
- console.info("Check isFirst succeed:" + isfirst);
} catch (e) {
console.error("Check isFirst failed: " + e);
}
@@ -1085,14 +1109,15 @@ isLast(): boolean
```js
try {
let resultSet;
+ let islast;
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ islast = resultSet.isLast();
+ console.info("Check isLast succeed: " + islast);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const islast = resultSet.isLast();
- console.info("Check isLast succeed: " + islast);
} catch (e) {
console.error("Check isLast failed: " + e);
}
@@ -1120,11 +1145,11 @@ try {
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ const isbeforefirst = resultSet.isBeforeFirst();
+ console.info("Check isBeforeFirst succeed: " + isbeforefirst);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const isbeforefirst = resultSet.isBeforeFirst();
- console.info("Check isBeforeFirst succeed: " + isbeforefirst);
} catch (e) {
console.error("Check isBeforeFirst failed: " + e);
}
@@ -1152,11 +1177,11 @@ try {
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ const isafterlast = resultSet.isAfterLast();
+ console.info("Check isAfterLast succeed:" + isafterlast);
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const isafterlast = resultSet.isAfterLast();
- console.info("Check isAfterLast succeed:" + isafterlast);
} catch (e) {
console.error("Check isAfterLast failed: " + e);
}
@@ -1184,11 +1209,11 @@ try {
kvStore.getResultSet('batch_test_string_key').then((result) => {
console.info('getResultSet succeed.');
resultSet = result;
+ const entry = resultSet.getEntry();
+ console.info("getEntry succeed:" + JSON.stringify(entry));
}).catch((err) => {
console.error('getResultSet failed: ' + err);
});
- const entry = resultSet.getEntry();
- console.info("getEntry succeed:" + JSON.stringify(entry));
} catch (e) {
console.error("getEntry failed: " + e);
}
@@ -1810,7 +1835,7 @@ try {
limit(total: number, offset: number): Query
-构造一个Query对象来指定结果的数量和开始位置。
+构造一个Query对象来指定结果的数量和开始位置。该接口必须要在Query对象查询和升降序等操作之后调用,调用limit接口后,不可再对Query对象进行查询和升降序等操作。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core