提交 0c8c3bba 编写于 作者: Q qing

KVStore-errcode

Signed-off-by: Nqing <yangqing89@huawei.com>
上级 0c36d5b5
...@@ -6,20 +6,20 @@ ...@@ -6,20 +6,20 @@
## 接口说明 ## 接口说明
分布式数据相关功能接口请见[分布式数据管理](../reference/apis/js-apis-distributed-data.md)
分布式数据相关功能接口请见[分布式键值数据库](../reference/apis/js-apis-distributedKVStore.md)
**表1** 分布式数据服务关键API功能介绍 **表1** 分布式数据服务关键API功能介绍
| 接口名称 | 描述 | | 接口名称 | 描述 |
| ------------------------------------------------------------ | ----------------------------------------------- | | ------------------------------------------------------------ | ------------------------------------------------------------ |
| createKVManager(config: KVManagerConfig, callback: AsyncCallback&lt;KVManager&gt;): void<br/>createKVManager(config: KVManagerConfig): Promise&lt;KVManager> | 创建一个`KVManager`对象实例,用于管理数据库对象。 | | createKVManager(config: KVManagerConfig, callback: AsyncCallback&lt;KVManager&gt;): void<br/>createKVManager(config: KVManagerConfig): Promise&lt;KVManager> | 创建一个`KVManager`对象实例,用于管理数据库对象。 |
| getKVStore&lt;TextendsKVStore&gt;(storeId: string, options: Options, callback: AsyncCallback&lt;T&gt;): void<br/>getKVStore&lt;TextendsKVStore&gt;(storeId: string, options: Options): Promise&lt;T&gt; | 指定`Options``storeId`,创建并获取`KVStore`数据库。 | | getKVStore&lt;TextendsKVStore&gt;(storeId: string, options: Options, callback: AsyncCallback&lt;T&gt;): void<br/>getKVStore&lt;TextendsKVStore&gt;(storeId: string, options: Options): Promise&lt;T&gt; | 指定`Options``storeId`,创建并获取指定类型`KVStore`数据库。 |
| put(key: string, value: Uint8Array\|string\|number\|boolean, callback: AsyncCallback&lt;void&gt;): void<br/>put(key: string, value: Uint8Array\|string\|number\|boolean): Promise&lt;void> | 插入和更新数据。 | | put(key: string, value: Uint8Array\|string\|number\|boolean, callback: AsyncCallback&lt;void&gt;): void<br/>put(key: string, value: Uint8Array\|string\|number\|boolean): Promise&lt;void> | 插入和更新数据。 |
| delete(key: string, callback: AsyncCallback&lt;void&gt;): void<br/>delete(key: string): Promise&lt;void> | 删除数据。 | | delete(key: string, callback: AsyncCallback&lt;void&gt;): void<br/>delete(key: string): Promise&lt;void> | 删除数据。 |
| get(key: string, callback: AsyncCallback&lt;Uint8Array\|string\|boolean\|number&gt;): void<br/>get(key: string): Promise&lt;Uint8Array\|string\|boolean\|number> | 查询数据。 | | get(key: string, callback: AsyncCallback&lt;Uint8Array\|string\|boolean\|number&gt;): void<br/>get(key: string): Promise&lt;Uint8Array\|string\|boolean\|number> | 查询数据。 |
| on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;ChangeNotification&gt;): void<br/>on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string,number]&gt;&gt;): void | 订阅数据库中数据的变化。 | | on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;ChangeNotification&gt;): void<br/>on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string,number]&gt;&gt;): void | 订阅数据库中数据的变化。 |
| sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void | 在手动模式下,触发数据库同步。 | | sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void | 在手动模式下,触发数据库同步。 |
## 开发步骤 ## 开发步骤
...@@ -28,23 +28,25 @@ ...@@ -28,23 +28,25 @@
1. 导入模块。 1. 导入模块。
```js ```js
import distributedData from '@ohos.data.distributedData'; import distributedKVStore from '@ohos.data.distributedKVStore';
``` ```
2. 请求权限(同步操作时进行该步骤)。 2. 请求权限(同步操作时进行该步骤)。
需要在`config.json`文件里进行配置请求权限(FA模型),示例代码如下: 需要在`config.json`文件里进行配置请求权限(FA模型),示例代码如下:
```json ```json
{ {
"module": { "module": {
"reqPermissions": [ "reqPermissions": [
{ {
"name": "ohos.permission.DISTRIBUTED_DATASYNC" "name": "ohos.permission.DISTRIBUTED_DATASYNC"
} }
] ]
} }
} }
``` ```
Stage模型下的权限请求请参见[权限声明-Stage模型](../security/accesstoken-guidelines.md#stage模型) Stage模型下的权限请求请参见[权限声明-Stage模型](../security/accesstoken-guidelines.md#stage模型)
这个权限还需要在应用首次启动的时候弹窗获取用户授权,可以通过如下代码实现: 这个权限还需要在应用首次启动的时候弹窗获取用户授权,可以通过如下代码实现:
...@@ -52,7 +54,7 @@ ...@@ -52,7 +54,7 @@
```js ```js
// FA模型 // FA模型
import featureAbility from '@ohos.ability.featureAbility'; import featureAbility from '@ohos.ability.featureAbility';
function grantPermission() { function grantPermission() {
console.info('grantPermission'); console.info('grantPermission');
let context = featureAbility.getContext(); let context = featureAbility.getContext();
...@@ -62,21 +64,21 @@ ...@@ -62,21 +64,21 @@
console.info('failed: ${error}'); console.info('failed: ${error}');
}) })
} }
grantPermission(); grantPermission();
// Stage模型 // Stage模型
import Ability from '@ohos.application.Ability'; import Ability from '@ohos.application.Ability';
let context = null; let context = null;
function grantPermission() { function grantPermission() {
class MainAbility extends Ability { class MainAbility extends Ability {
onWindowStageCreate(windowStage) { onWindowStageCreate(windowStage) {
let context = this.context; let context = this.context;
} }
} }
let permissions = ['ohos.permission.DISTRIBUTED_DATASYNC']; let permissions = ['ohos.permission.DISTRIBUTED_DATASYNC'];
context.requestPermissionsFromUser(permissions).then((data) => { context.requestPermissionsFromUser(permissions).then((data) => {
console.log('success: ${data}'); console.log('success: ${data}');
...@@ -84,7 +86,7 @@ ...@@ -84,7 +86,7 @@
console.log('failed: ${error}'); console.log('failed: ${error}');
}); });
} }
grantPermission(); grantPermission();
``` ```
...@@ -99,7 +101,7 @@ ...@@ -99,7 +101,7 @@
// FA模型获取context // FA模型获取context
import featureAbility from '@ohos.ability.featureAbility'; import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext(); let context = featureAbility.getContext();
// Stage模型获取context // Stage模型获取context
import AbilityStage from '@ohos.application.Ability'; import AbilityStage from '@ohos.application.Ability';
let context = null; let context = null;
...@@ -108,27 +110,23 @@ ...@@ -108,27 +110,23 @@
context = this.context; context = this.context;
} }
} }
let kvManager; let kvManager;
try { try {
const kvManagerConfig = { const kvManagerConfig = {
bundleName: 'com.example.datamanagertest', bundleName: 'com.example.datamanagertest',
userInfo: { context:context,
context:context,
userId: '0',
userType: distributedData.UserType.SAME_USER_ID
}
} }
distributedData.createKVManager(kvManagerConfig, function (err, manager) { distributedKVStore.createKVManager(kvManagerConfig, function (err, manager) {
if (err) { if (err) {
console.log('createKVManager err: ${error}'); console.error(`Fail to createKVManager.code is ${err.code},message is ${err.message}`);
return; return;
} }
console.log('createKVManager success'); console.log('Succeeded in creating KVManager');
kvManager = manager; kvManager = manager;
}); });
} catch (e) { } catch (e) {
console.log('An unexpected error occurred. Error: ${e}'); console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
} }
``` ```
...@@ -147,34 +145,38 @@ ...@@ -147,34 +145,38 @@
encrypt: false, encrypt: false,
backup: false, backup: false,
autoSync: false, autoSync: false,
kvStoreType: distributedData.KVStoreType.SINGLE_VERSION, kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
securityLevel: distributedData.SecurityLevel.S0 securityLevel: distributedKVStore.SecurityLevel.S1
}; };
kvManager.getKVStore('storeId', options, function (err, store) { kvManager.getKVStore('storeId', options, function (err, store) {
if (err) { if (err) {
console.log('getKVStore err: ${err}'); console.error(`Fail to get KVStore: code is ${err.code},message is ${err.message}`);
return; return;
} }
console.log('getKVStore success'); console.log('Succeeded in getting KVStore');
kvStore = store; kvStore = store;
}); });
} catch (e) { } catch (e) {
console.log('An unexpected error occurred. Error: ${e}'); console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
} }
``` ```
> **说明:** > **说明:**
> >
> 组网设备间同步数据的场景,建议在应用启动时打开分布式数据库,获取数据库的句柄。在该句柄(如示例中的`kvStore`)的生命周期内无需重复创建数据库,可直接使用句柄对数据库进行数据的插入等操作。 > 组网设备间同步数据的场景,建议在应用启动时打开分布式数据库,获取数据库的句柄。在该句柄(如示例中的`kvStore`)的生命周期内无需重复创建数据库,可直接使用句柄对数据库进行数据的插入等操作。
5. 订阅分布式数据变化。 5. 订阅分布式数据变化。
以下为订阅单版本分布式数据库数据变化通知的代码示例: 以下为订阅单版本分布式数据库数据变化通知的代码示例:
```js ```js
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_ALL, function (data) { try{
console.log("dataChange callback call data: ${data}"); kvStore.on('dataChange', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_ALL, function (data) {
}); console.log(`dataChange callback call data: ${data}`);
});
}catch(e){
console.error(`An unexpected error occured.code is ${e.code},message is ${e.message}`);
}
``` ```
6. 将数据写入分布式数据库。 6. 将数据写入分布式数据库。
...@@ -188,15 +190,15 @@ ...@@ -188,15 +190,15 @@
const KEY_TEST_STRING_ELEMENT = 'key_test_string'; const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try { try {
kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) { kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) {
if (err != undefined) { if (err != undefined) {
console.log('put err: ${error}'); console.error(`Fail to put.code is ${err.code},message is ${err.message}`);
return; return;
} }
console.log('put success'); console.log("Succeeded in putting");
}); });
} catch (e) { }catch (e) {
console.log('An unexpected error occurred. Error: ${e}'); console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
} }
``` ```
...@@ -211,18 +213,22 @@ ...@@ -211,18 +213,22 @@
const KEY_TEST_STRING_ELEMENT = 'key_test_string'; const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try { try {
kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err, data) { kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) {
if (err != undefined) {
console.error(`Fail to put.code is ${err.code},message is ${err.message}`);
return;
}
console.log("Succeeded in putting");
kvStore.get(KEY_TEST_STRING_ELEMENT, function (err,data) {
if (err != undefined) { if (err != undefined) {
console.log('put err: ${error}'); console.error(`Fail to get.code is ${err.code},message is ${err.message}`);
return; return;
} }
console.log('put success'); console.log(`Succeeded in getting data:${data}`);
kvStore.get(KEY_TEST_STRING_ELEMENT, function (err, data) {
console.log('get success data: ${data}');
}); });
}); });
} catch (e) { }catch (e) {
console.log('An unexpected error occurred. Error: ${e}'); console.error(`Fail to get.code is ${e.code},message is ${e.message}`);
} }
``` ```
...@@ -233,7 +239,7 @@ ...@@ -233,7 +239,7 @@
> **说明**: > **说明**:
> >
> 其中`deviceManager`模块的接口均为系统接口。 > 其中`deviceManager`模块的接口均为系统接口。
以下为单版本分布式数据库进行数据同步的代码示例: 以下为单版本分布式数据库进行数据同步的代码示例:
```js ```js
...@@ -254,20 +260,21 @@ ...@@ -254,20 +260,21 @@
} }
try{ try{
// 1000表示最大延迟时间为1000ms // 1000表示最大延迟时间为1000ms
kvStore.sync(deviceIds, distributedData.SyncMode.PUSH_ONLY, 1000); kvStore.sync(deviceIds, distributedKVStore.SyncMode.PUSH_ONLY, 1000);
} catch (e) { } catch (e) {
console.log('An unexpected error occurred. Error: ${e}'); console.error(`An unexpected error occurred. code is ${e.code},message is ${e.message}`);
} }
} }
}); });
``` ```
## 相关实例 ## 相关实例
针对分布式数据开发,有以下相关实例可供参考: 针对分布式数据开发,有以下相关实例可供参考:
- [`DistributedCalc`:分布式计算器(JS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/common/DistributeCalc) - [`DistributedCalc`:分布式计算器(JS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/common/DistributeCalc)
- [`DistributedCalc`:分布式计算器(ArkTS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/Preset/DistributeCalc) - [`DistributedCalc`:分布式计算器(eTS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/Preset/DistributeCalc)
- [`DistributedDataGobang`:分布式五子棋(ArkTS)(API9)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/data/DistributedDataGobang) - [`DistributedDataGobang`:分布式五子棋(eTS)(API9)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/data/DistributedDataGobang)
- [`DDMQuery`:结果集与谓词(ArkTS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/master/data/DDMQuery) - [`DDMQuery`:结果集与谓词(eTS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/master/data/DDMQuery)
- [`KvStore`:分布式数据库(ArkTS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/data/Kvstore) - [`KvStore`:分布式数据库(eTS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/data/Kvstore)
- [分布式数据库(JS)(API8)](https://gitee.com/openharmony/codelabs/tree/master/Data/JsDistributedData) - [分布式数据库(JS)(API8)](https://gitee.com/openharmony/codelabs/tree/master/Data/JsDistributedData)
\ No newline at end of file
...@@ -140,8 +140,8 @@ ...@@ -140,8 +140,8 @@
- [@ohos.data.dataShare (数据共享)](js-apis-data-dataShare.md) - [@ohos.data.dataShare (数据共享)](js-apis-data-dataShare.md)
- [@ohos.data.dataSharePredicates (数据共享谓词)](js-apis-data-dataSharePredicates.md) - [@ohos.data.dataSharePredicates (数据共享谓词)](js-apis-data-dataSharePredicates.md)
- [@ohos.data.dataShareResultSet (数据共享结果集)](js-apis-data-DataShareResultSet.md) - [@ohos.data.dataShareResultSet (数据共享结果集)](js-apis-data-DataShareResultSet.md)
- [@ohos.data.distributedData (分布式数据管理)](js-apis-distributed-data.md)
- [@ohos.data.distributedDataObject (分布式数据对象)](js-apis-data-distributedobject.md) - [@ohos.data.distributedDataObject (分布式数据对象)](js-apis-data-distributedobject.md)
- [@ohos.data.distributedKVStore (分布式键值数据库)](js-apis-distributedKVStore.md)
- [@ohos.data.preferences (首选项)](js-apis-data-preferences.md) - [@ohos.data.preferences (首选项)](js-apis-data-preferences.md)
- [@ohos.data.rdb (关系型数据库)](js-apis-data-rdb.md) - [@ohos.data.rdb (关系型数据库)](js-apis-data-rdb.md)
- [@ohos.data.ValuesBucket (数据集)](js-apis-data-ValuesBucket.md) - [@ohos.data.ValuesBucket (数据集)](js-apis-data-ValuesBucket.md)
...@@ -210,7 +210,6 @@ ...@@ -210,7 +210,6 @@
- [@ohos.wallpaper (壁纸)](js-apis-wallpaper.md) - [@ohos.wallpaper (壁纸)](js-apis-wallpaper.md)
- [@ohos.web.webview(Web)](js-apis-webview.md) - [@ohos.web.webview(Web)](js-apis-webview.md)
- [Timer (定时器)](js-apis-timer.md) - [Timer (定时器)](js-apis-timer.md)
- 设备管理 - 设备管理
- [@ohos.batteryInfo (电量信息)](js-apis-battery-info.md) - [@ohos.batteryInfo (电量信息)](js-apis-battery-info.md)
...@@ -271,6 +270,7 @@ ...@@ -271,6 +270,7 @@
- 已停止维护的接口 - 已停止维护的接口
- [@ohos.bytrace (性能打点)](js-apis-bytrace.md) - [@ohos.bytrace (性能打点)](js-apis-bytrace.md)
- [@ohos.data.storage (轻量级存储)](js-apis-data-storage.md) - [@ohos.data.storage (轻量级存储)](js-apis-data-storage.md)
- [@ohos.data.distributedData (分布式数据管理)](js-apis-distributed-data.md)
- [@ohos.prompt (弹窗)](js-apis-prompt.md) - [@ohos.prompt (弹窗)](js-apis-prompt.md)
- [@ohos.reminderAgent (后台代理提醒)](js-apis-reminderAgent.md) - [@ohos.reminderAgent (后台代理提醒)](js-apis-reminderAgent.md)
- [@system.app (应用上下文)](js-apis-system-app.md) - [@system.app (应用上下文)](js-apis-system-app.md)
......
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
>**说明:** >**说明:**
> >
>本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 >- 从API Version 9开始,该接口不再维护,推荐使用新接口[`@ohos.data.distributedKVStore`](js-apis-distributedKVStore.md)。
>
>- 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块 ## 导入模块
...@@ -39,56 +41,28 @@ createKVManager(config: KVManagerConfig, callback: AsyncCallback&lt;KVManager&gt ...@@ -39,56 +41,28 @@ createKVManager(config: KVManagerConfig, callback: AsyncCallback&lt;KVManager&gt
| callback | AsyncCallback&lt;[KVManager](#kvmanager)&gt; | 是 | 回调函数。返回创建的KVManager对象实例。 | | callback | AsyncCallback&lt;[KVManager](#kvmanager)&gt; | 是 | 回调函数。返回创建的KVManager对象实例。 |
**示例:** **示例:**
```js
Stage模型下的示例:
```ts
import AbilityStage from '@ohos.application.Ability'
let kvManager; let kvManager;
export default class MyAbilityStage extends AbilityStage { try {
onCreate() { const kvManagerConfig = {
console.log("MyAbilityStage onCreate") bundleName : 'com.example.datamanagertest',
let context = this.context userInfo : {
const kvManagerConfig = { userId : '0',
context: context, userType : distributedData.UserType.SAME_USER_ID
bundleName: 'com.example.datamanagertest',
userInfo: {
userId: '0',
userType: distributedData.UserType.SAME_USER_ID
}
} }
distributedData.createKVManager(kvManagerConfig, function (err, manager) {
if (err) {
console.log("Failed to create KVManager: " + JSON.stringify(err));
return;
}
console.log("Succeeded in creating KVManager");
kvManager = manager;
});
}
}
```
FA模型下的示例:
```js
import featureAbility from '@ohos.ability.featureAbility'
let kvManager;
let context = featureAbility.getContext()
const kvManagerConfig = {
context: context,
bundleName: 'com.example.datamanagertest',
userInfo: {
userId: '0',
userType: distributedData.UserType.SAME_USER_ID
} }
distributedData.createKVManager(kvManagerConfig, function (err, manager) {
if (err) {
console.log("Failed to create KVManager: " + JSON.stringify(err));
return;
}
console.log("Succeeded in creating KVManager");
kvManager = manager;
});
} catch (e) {
console.log("An unexpected error occurred. Error:" + e);
} }
distributedData.createKVManager(kvManagerConfig, function (err, manager) {
if (err) {
console.log("Failed to create KVManager: " + JSON.stringify(err));
return;
}
console.log("Created KVManager");
kvManager = manager;
});
``` ```
## distributedData.createKVManager ## distributedData.createKVManager
...@@ -112,52 +86,28 @@ createKVManager(config: KVManagerConfig): Promise&lt;KVManager&gt; ...@@ -112,52 +86,28 @@ createKVManager(config: KVManagerConfig): Promise&lt;KVManager&gt;
| Promise&lt;[KVManager](#kvmanager)&gt; | Promise对象。返回创建的KVManager对象实例。 | | Promise&lt;[KVManager](#kvmanager)&gt; | Promise对象。返回创建的KVManager对象实例。 |
**示例:** **示例:**
```js
Stage模型下的示例:
```ts
import AbilityStage from '@ohos.application.Ability'
let kvManager; let kvManager;
export default class MyAbilityStage extends AbilityStage { try {
onCreate() { const kvManagerConfig = {
console.log("MyAbilityStage onCreate") bundleName : 'com.example.datamanagertest',
let context = this.context userInfo : {
const kvManagerConfig = { userId : '0',
context: context, userType : distributedData.UserType.SAME_USER_ID
bundleName: 'com.example.datamanagertest',
userInfo: {
userId: '0',
userType: distributedData.UserType.SAME_USER_ID
}
} }
distributedData.createKVManager(kvManagerConfig).then((manager) => {
console.log("Succeeded in creating KVManager");
kvManager = manager;
}).catch((err) => {
console.log("Failed to create KVManager: " + JSON.stringify(err));
});
}
}
```
FA模型下的示例:
```js
import featureAbility from '@ohos.ability.featureAbility'
let kvManager;
let context = featureAbility.getContext()
const kvManagerConfig = {
context: context,
bundleName: 'com.example.datamanagertest',
userInfo: {
userId: '0',
userType: distributedData.UserType.SAME_USER_ID
} }
distributedData.createKVManager(kvManagerConfig, function (err, manager) {
if (err) {
console.log("Failed to create KVManager: " + JSON.stringify(err));
return;
}
console.log("Succeeded in creating KVManager");
kvManager = manager;
});
} catch (e) {
console.log("An unexpected error occurred. Error:" + e);
} }
distributedData.createKVManager(kvManagerConfig).then((manager) => {
console.log("Succeeded in creating KVManager");
kvManager = manager;
}).catch((err) => {
console.log("Failed to create KVManager: " + JSON.stringify(err));
});
``` ```
## KVManagerConfig ## KVManagerConfig
...@@ -168,7 +118,6 @@ distributedData.createKVManager(kvManagerConfig).then((manager) => { ...@@ -168,7 +118,6 @@ distributedData.createKVManager(kvManagerConfig).then((manager) => {
| 参数名 | 参数类型 | 必填 | 说明 | | 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ | | ----- | ------ | ------ | ------ |
| context<sup>9+<sup> | Context | 是 | 应用的上下文。 <br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。|
| userInfo | [UserInfo](#userinfo) | 是 | 调用方的用户信息。 | | userInfo | [UserInfo](#userinfo) | 是 | 调用方的用户信息。 |
| bundleName | string | 是 | 调用方的包名。 | | bundleName | string | 是 | 调用方的包名。 |
...@@ -2160,7 +2109,6 @@ try { ...@@ -2160,7 +2109,6 @@ try {
} }
``` ```
### put ### put
put(key: string, value: Uint8Array | string | number | boolean): Promise&lt;void&gt; put(key: string, value: Uint8Array | string | number | boolean): Promise&lt;void&gt;
...@@ -2282,303 +2230,6 @@ try { ...@@ -2282,303 +2230,6 @@ try {
} }
``` ```
### delete<sup>9+</sup>
delete(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;void&gt;)
从数据库中删除符合predicates条件的键值对,使用callback异步回调。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| predicates | [DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。|
| callback | AsyncCallback&lt;void&gt; | 是 |回调函数。 |
**示例:**
```js
import dataSharePredicates from '@ohos.data.dataSharePredicates';
let kvStore;
try {
let predicates = new dataSharePredicates.DataSharePredicates();
kvStore.delete(predicates, function (err, data) {
if (err == undefined) {
console.log('delete success');
} else {
console.log('delete fail' + err);
}
});
} catch (e) {
console.log('An unexpected error occurred. Error:' + e);
}
```
### delete<sup>9+</sup>
delete(predicates: dataSharePredicates.DataSharePredicates): Promise&lt;void&gt;
从数据库中删除符合predicates条件的键值对,使用Promise异步回调。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| predicates | [DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。|
**返回值:**
| 类型 | 说明 |
| ------ | ------- |
| Promise&lt;void&gt; |无返回结果的Promise对象。|
**示例:**
```js
import dataSharePredicates from '@ohos.data.dataSharePredicates';
let kvStore;
try {
let predicates = new dataSharePredicates.DataSharePredicates();
let arr = ["name"];
predicates.inKeys(arr);
kvStore.put("name", "bob").then((data) => {
console.log('put success' + JSON.stringify(data));
kvStore.delete(predicates).then((data) => {
console.log('delete success');
}).catch((err) => {
console.log('delete fail' + JSON.stringify(err));
});
}) .catch((err) => {
console.log(' put fail' + err);
});
}catch (e) {
console.log("An unexpected error occurred. Error:" + e);
}
```
### backup<sup>9+</sup>
backup(file:string, callback: AsyncCallback&lt;void&gt;):void
以指定名称备份数据库,使用callback异步回调。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| file | string | 是 | 备份数据库的指定名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当以指定名称备份数据库成功,err为undefined,否则为错误对象。 |
**示例:**
```js
let kvStore;
let file = "BK001";
try {
kvStore.backup(file, (err, data) => {
if (err) {
console.info("backup err : " + err);
} else {
console.info("backup data : " + data);
}
});
} catch (e) {
console.log("An unexpected error occurred. Error : " + e);
}
```
### backup<sup>9+</sup>
backup(file:string): Promise&lt;void&gt;
以指定名称备份数据库,使用Promise异步回调。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| file | string | 是 | 备份数据库的指定名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
**示例:**
```js
let kvStore;
let file = "BK001";
try {
kvStore.backup(file).then((data) => {
console.info("backup data : " + data);
}).catch((err) => {
console.info("backup err : " + err);
});
} catch (e) {
console.log("An unexpected error occurred. Error : " + e);
}
```
### restore<sup>9+</sup>
restore(file:string, callback: AsyncCallback&lt;void&gt;):void
从指定的数据库文件恢复数据库,使用callback异步回调。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| file | string | 是 | 指定的数据库文件名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当从指定的数据库文件恢复数据库成功,err为undefined,否则为错误对象。 |
**示例:**
```js
let kvStore;
let file = "BK001";
try {
kvStore.restore(file, (err, data) => {
if (err) {
console.info("restore err : " + err);
} else {
console.info("restore data : " + data);
}
});
} catch (e) {
console.log("An unexpected error occurred. Error : " + e);
}
```
### restore<sup>9+</sup>
restore(file:string): Promise&lt;void&gt;
从指定的数据库文件恢复数据库,使用Promise异步回调。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| file | string | 是 | 指定的数据库文件名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
**示例:**
```js
let kvStore;
let file = "BK001";
try {
kvStore.restore(file).then((data) => {
console.info("restore data : " + data);
}).catch((err) => {
console.info("restore err : " + err);
});
} catch (e) {
console.log("An unexpected error occurred. Error : " + e);
}
```
### deleteBackup<sup>9+</sup>
deleteBackup(files:Array&lt;string&gt;, callback: AsyncCallback&lt;Array&lt;[string, number]&gt;&gt;):void
根据指定名称删除备份文件,使用callback异步回调。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| -------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ |
| files | Array&lt;string&gt; | 是 | 删除备份文件所指定的名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
| callback | AsyncCallback&lt;Array&lt;[string, number]&gt;&gt; | 是 | 回调函数,返回删除备份的文件名及其处理结果。 |
**示例:**
```js
let kvStore;
let files = ["BK001", "BK002"];
try {
kvStore.deleteBackup(files, (err, data) => {
if (err) {
console.info("deleteBackup err : " + err);
} else {
console.info("deleteBackup data : " + data);
}
});
} catch (e) {
console.log("An unexpected error occurred. Error : " + e);
}
```
### deleteBackup<sup>9+</sup>
deleteBackup(files:Array&lt;string&gt;): Promise&lt;Array&lt;[string, number]&gt;&gt;
根据指定名称删除备份文件,使用Promise异步回调。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| files | Array&lt;string&gt; | 是 | 删除备份文件所指定的名称,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。 |
**返回值:**
| 类型 | 说明 |
| -------------------------------------------- | ----------------------------------------------- |
| Promise&lt;Array&lt;[string, number]&gt;&gt; | Promise对象,返回删除备份的文件名及其处理结果。 |
**示例:**
```js
let kvStore;
let files = ["BK001", "BK002"];
try {
kvStore.deleteBackup(files).then((data) => {
console.info("deleteBackup data : " + data);
}).catch((err) => {
console.info("deleteBackup err : " + err);
})
} catch (e) {
console.log("An unexpected error occurred. Error : " + e);
}
```
### on('dataChange') ### on('dataChange')
on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void
...@@ -2604,7 +2255,6 @@ kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, fun ...@@ -2604,7 +2255,6 @@ kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, fun
}); });
``` ```
### on('syncComplete') ### on('syncComplete')
on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
...@@ -2665,43 +2315,6 @@ class KvstoreModel { ...@@ -2665,43 +2315,6 @@ class KvstoreModel {
} }
``` ```
### off('syncComplete')<sup>9+</sup>
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
取消订阅同步完成事件回调通知,此方法为同步方法。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
| syncCallback |Callback&lt;Array&lt;[string, number]&gt;&gt; | 否 |用于向调用方发送同步结果的回调。 |
**示例:**
```js
let kvStore;
class KvstoreModel {
call(data) {
console.log("syncComplete: " + data);
}
subscribeSyncComplete() {
if (kvStore != null) {
kvStore.on('syncComplete', this.call);
}
}
unsubscribeSyncComplete() {
if (kvStore != null) {
kvStore.off('syncComplete', this.call);
}
}
}
```
### putBatch<sup>8+</sup> ### putBatch<sup>8+</sup>
putBatch(entries: Entry[], callback: AsyncCallback&lt;void&gt;): void putBatch(entries: Entry[], callback: AsyncCallback&lt;void&gt;): void
...@@ -2783,112 +2396,24 @@ try { ...@@ -2783,112 +2396,24 @@ try {
type : distributedData.ValueType.STRING, type : distributedData.ValueType.STRING,
value : 'batch_test_string_value' value : 'batch_test_string_value'
} }
} }
entries.push(entry); entries.push(entry);
} }
console.log('entries: ' + JSON.stringify(entries)); console.log('entries: ' + JSON.stringify(entries));
kvStore.putBatch(entries).then(async (err) => { kvStore.putBatch(entries).then(async (err) => {
console.log('putBatch success');
kvStore.getEntries('batch_test_string_key').then((entries) => {
console.log('getEntries success');
console.log('PutBatch ' + JSON.stringify(entries));
}).catch((err) => {
console.log('getEntries fail ' + JSON.stringify(err));
});
}).catch((err) => {
console.log('putBatch fail ' + JSON.stringify(err));
});
}catch(e) {
console.log('PutBatch e ' + JSON.stringify(e));
}
```
### putBatch<sup>9+</sup>
putBatch(value: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;void&gt;): void
将值写入KvStore数据库,使用callback异步回调。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| value |Array&lt;[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)&gt; | 是 |表示要插入的数据。 |
| callback |Asyncallback&lt;void&gt; |是 |回调函数。 |
**示例:**
```js
let kvStore;
try {
let v8Arr = [];
let arr = new Uint8Array([4,5,6,7]);
let vb1 = {key : "name_1", value : 32}
let vb2 = {key : "name_2", value : arr};
let vb3 = {key : "name_3", value : "lisi"};
v8Arr.push(vb1);
v8Arr.push(vb2);
v8Arr.push(vb3);
kvStore.putBatch(v8Arr, async function (err,data) {
console.log('putBatch success');
}).catch((err) => {
console.log('putBatch fail ' + JSON.stringify(err));
});
}catch(e) {
console.log('putBatch e ' + JSON.stringify(e));
}
```
### putBatch<sup>9+</sup>
putBatch(value: Array&lt;ValuesBucket&gt;): Promise&lt;void&gt;
将valuesbucket类型的值写入KvStore数据库,使用Promise异步回调。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| value |Array&lt;[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)&gt; | 是 |表示要插入的数据。 |
**返回值:**
| 类型 | 说明 |
| ------ | ------- |
| Promise&lt;void&gt; |五返回结果的Promise对象。|
**示例:**
```js
let kvStore;
try {
let v8Arr = [];
let arr = new Uint8Array([4,5,6,7]);
let vb1 = {key : "name_1", value : 32}
let vb2 = {key : "name_2", value : arr};
let vb3 = {key : "name_3", value : "lisi"};
v8Arr.push(vb1);
v8Arr.push(vb2);
v8Arr.push(vb3);
kvStore.putBatch(v8Arr).then(async (err) => {
console.log('putBatch success'); console.log('putBatch success');
kvStore.getEntries('batch_test_string_key').then((entries) => {
console.log('getEntries success');
console.log('PutBatch ' + JSON.stringify(entries));
}).catch((err) => {
console.log('getEntries fail ' + JSON.stringify(err));
});
}).catch((err) => { }).catch((err) => {
console.log('putBatch fail ' + JSON.stringify(err)); console.log('putBatch fail ' + JSON.stringify(err));
}); });
}catch(e) { }catch(e) {
console.log('PutBatch e ' + JSON.stringify(e)); console.log('PutBatch e ' + JSON.stringify(e));
} }
``` ```
### deleteBatch<sup>8+</sup> ### deleteBatch<sup>8+</sup>
...@@ -3924,85 +3449,6 @@ try { ...@@ -3924,85 +3449,6 @@ try {
} }
``` ```
### getResultSet<sup>9+</sup>
getResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
获取与指定Predicate对象匹配的KvStoreResultSet对象,使用callback异步回调。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| predicates | [DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。 |
| callback |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; | 是 |回调函数,获取与指定Predicates对象匹配的KvStoreResultSet对象。 |
**示例:**
```js
import dataSharePredicates from '@ohos.data.dataSharePredicates';
let kvStore;
try {
let resultSet;
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.prefixKey("batch_test_string_key");
kvStore.getResultSet(predicates, async function (err, result) {
console.log(' GetResultSet success');
resultSet = result;
kvStore.closeResultSet(resultSet, function (err, data) {
console.log(' closeResultSet success');
})
});
}catch(e) {
console.log('An unexpected error occurred. Error:' + e);
}
```
### getResultSet<sup>9+</sup>
getResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise&lt;KvStoreResultSet&gt;
获取与指定Predicate对象匹配的KvStoreResultSet对象,使用Promise异步回调。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| predicates |[DataSharePredicates](js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。 |
**返回值:**
| 类型 | 说明 |
| ------ | ------- |
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |无返回结果的Promise对象。|
**示例:**
```js
import dataSharePredicates from '@ohos.data.dataSharePredicates';
let kvStore;
try {
let resultSet;
let predicates = new dataSharePredicates.DataSharePredicates();
predicates.prefixKey("batch_test_string_key");
kvStore.getResultSet(predicates) .then((result) => {
console.log(' GetResultSet success');
resultSet = result;
kvStore.closeResultSet(resultSet, function (err, data) {
console.log(' closeResultSet success');
})
});
}catch(e) {
console.log('An unexpected error occurred. Error:' + e);
}
```
### closeResultSet<sup>8+</sup> ### closeResultSet<sup>8+</sup>
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
...@@ -4338,67 +3784,6 @@ class KvstoreModel { ...@@ -4338,67 +3784,6 @@ class KvstoreModel {
} }
``` ```
### on('dataChange')<sup>9+</sup>
on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void
订阅指定类型的数据变更通知,此方法为同步方法。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| type |[SubscribeType](#subscribetype) | 是 |表示订阅的类型。 |
| listener |Callback&lt;[ChangeNotification](#changenotification)&gt; | 是 |回调函数。 |
**示例:**
```js
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
console.log("dataChange callback call data: " + JSON.stringify(data));
});
```
### off('dataChange')<sup>9+</sup>
off(event:'dataChange', listener?: Callback&lt;ChangeNotification&gt;): void
取消订阅数据变更通知,此方法为同步方法。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |取消订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| listener |Callback&lt;[ChangeNotification](#changenotification)&gt; |否 |回调函数。 |
**示例:**
```js
let kvStore;
class KvstoreModel {
call(data) {
console.log("dataChange: " + data);
}
subscribeDataChange() {
if (kvStore != null) {
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
}
}
unsubscribeDataChange() {
if (kvStore != null) {
kvStore.off('dataChange', this.call);
}
}
}
```
### sync<sup>7+</sup> ### sync<sup>7+</sup>
...@@ -4425,48 +3810,6 @@ let kvStore; ...@@ -4425,48 +3810,6 @@ let kvStore;
kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000); kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000);
``` ```
### sync<sup>9+</sup>
sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void
在手动同步方式下,触发数据库同步,此方法为同步方法。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| deviceIds |string[] | 是 |同一组网环境下,需要同步的设备的deviceId列表。 |
| mode |[SyncMode](#syncmode) | 是 |同步模式。 |
| query |[Query](#query8) | 是 |表示数据库的查询谓词条件 |
| delayMs |number | 否 |可选参数,允许延时时间,单位:ms(毫秒)。 |
**示例:**
```js
let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
kvStore.on('syncComplete', function (data) {
console.log('Sync dataChange');
});
kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
console.log('Sync put success');
const devices = ['deviceList'];
const mode = distributedData.SyncMode.PULL_ONLY;
const query = new distributedData.Query();
query.prefixKey("batch_test");
query.deviceId('localDeviceId');
kvStore.sync(devices, query, mode , 1000);
});
}catch(e) {
console.log('Sync e' + e);
}
```
### setSyncParam<sup>8+</sup> ### setSyncParam<sup>8+</sup>
setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback&lt;void&gt;): void setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback&lt;void&gt;): void
...@@ -5734,48 +5077,6 @@ try { ...@@ -5734,48 +5077,6 @@ try {
} }
``` ```
### sync<sup>9+</sup>
sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void
在手动同步方式下, 触发数据库同步,此方法为同步方法。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| deviceIds |string[] | 是 |需要同步DeviceKvStore数据库的设备ID列表。 |
| query |[Query](#query8) | 是 | 数据库的查询谓词条件。|
| delayMs |number | 否 |可选参数,允许延时时间,单位:ms(毫秒)。 |
**示例:**
```js
let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
kvStore.on('syncComplete', function (data) {
console.log('Sync dataChange');
});
kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
console.log('Sync put success');
const devices = ['deviceList'];
const mode = distributedData.SyncMode.PULL_ONLY;
const query = new distributedData.Query();
query.prefixKey("batch_test");
query.deviceId('localDeviceId');
kvStore.sync(devices, query, 1000);
});
}catch(e) {
console.log('Sync e' + e);
}
```
### on('syncComplete')<sup>8+</sup> ### on('syncComplete')<sup>8+</sup>
on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
...@@ -5848,68 +5149,6 @@ class KvstoreModel { ...@@ -5848,68 +5149,6 @@ class KvstoreModel {
} }
``` ```
### on('dataChange')<sup>9+</sup>
on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void
订阅指定类型的数据变更通知,此方法为同步方法。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| type |[SubscribeType](#subscribetype) | 是 |表示订阅的类型。 |
| listener |Callback&lt;[ChangeNotification](#changenotification)&gt; | 是 |回调函数。 |
**示例:**
```js
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
console.log("dataChange callback call data: " + JSON.stringify(data));
});
```
### off('dataChange')<sup>9+</sup>
off(event:'dataChange', listener?: Callback&lt;ChangeNotification&gt;): void
取消订阅数据变更通知,此方法为同步方法。
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |取消订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| listener |Callback&lt;[ChangeNotification](#changenotification)&gt; |否 |回调函数。 |
**示例:**
```js
let kvStore;
class KvstoreModel {
call(data) {
console.log("dataChange: " + data);
}
subscribeDataChange() {
if (kvStore != null) {
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
}
}
unsubscribeDataChange() {
if (kvStore != null) {
kvStore.off('dataChange', this.call);
}
}
}
```
## SyncMode ## SyncMode
同步模式枚举。 同步模式枚举。
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
# 分布式键值数据库错误码
## 15100001 超过最大订阅数量
### 错误信息
Over max subscribe limits.
### 错误描述
该错误码表示在调用数据库变化订阅on接口时,订阅数量已超过最大限制。
### 可能原因
在调用订阅数据库变化接口时,对数据库的订阅数量已超过最大限制。
### 处理步骤
取消对数据库的部分订阅后,再次尝试订阅。
## 15100002 打开已有数据库时参数配置发生变化
### 错误信息
Open existed database with changed options.
### 错误描述
该错误码表示在调用getKVStore接口打开已创建的数据库时,options配置参数发生变化。
### 可能原因
打开已创建的数据库时,options参数配置发生了变化,可能原因如下:
1. 期望新建数据库时,使用了已创建过的数据库名称storeId。
2. 期望改变已创建数据库的options参数配置。
### 处理步骤
1. 新建数据库前,请检查数据库名称storeId不与已创建数据库的storeId重名。
2. 期望改变已创建数据库的options参数配置时,当前不支持该操作,请自行删除数据库后使用新的options参数重新创建。
## 15100003 数据库损坏
### 错误信息
Database corrupted.
### 错误描述
该错误码表示在调用数据库增、删、查、数据同步等接口时,数据库已损坏。
### 可能原因
调用数据库增、删、查、数据同步等接口操作数据库时,数据库文件已损坏。
### 处理步骤
1. 如果之前备份过数据库,可尝试使用已备份的数据库文件恢复数据库。
2. 如果之前没有备份过数据库,可尝试删除数据库后重新创建。
## 15100004 未找到相关数据
### 错误信息
Not found.
### 错误描述
该错误码表示在调用数据库deleteKVStore、delete、deleteBatch、get等接口时,未找到相关数据。
### 可能原因
在调用删除数据库、数据查询、数据删除等接口时未找到相关数据,可能原因如下。
1. 删除数据库操作时,数据库不存在或已删除。
2. 数据库数据查询操作时,相关数据不存在或已删除。
3. 数据库数据删除操作时,相关数据不存在或已删除。
### 处理步骤
1. 在删除数据库操作前,请检查数据库名称是否正确或是否重复删除。
2. 在数据库数据查询操作前,请检查查询关键字是否正确。
3. 在数据库数据删除操作前,请检查删除关键字是否正确或是否重复删除。
## 15100005 不支持当前操作
### 错误信息
Not support the operation.
### 错误描述
该错误码表示在调用数据库backup、restore等接口时,当前数据库不支持该操作。
### 可能原因
在调用数据库备份、恢复等接口时,当前数据库不支持该操作。
### 处理步骤
检查当前数据库是否支持备份、恢复操作。
## 15100006 数据库或查询结果集已关闭
### 错误信息
Database or result set already closed.
### 错误描述
该错误码表示在调用数据库或查询结果集相关接口时,数据库或查询结果集为关闭状态。
### 可能原因
在数据库或查询结果集操作前,已经手动关闭了数据库或查询结果集。
### 处理步骤
1. 在数据库相关操作前,请重新打开数据库之后再重试当前操作。
2. 在查询结果集相关操作前,请重新查询获取结果集之后再重试当前操作。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册