Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
a39e9b7a
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a39e9b7a
编写于
10月 19, 2022
作者:
Q
qing
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
kv-errcode-monthly
Signed-off-by:
N
qing
<
yangqing89@huawei.com
>
上级
30efe996
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
6012 addition
and
878 deletion
+6012
-878
zh-cn/application-dev/database/database-mdds-guidelines.md
zh-cn/application-dev/database/database-mdds-guidelines.md
+73
-66
zh-cn/application-dev/reference/apis/Readme-CN.md
zh-cn/application-dev/reference/apis/Readme-CN.md
+5
-3
zh-cn/application-dev/reference/apis/js-apis-distributed-data.md
...pplication-dev/reference/apis/js-apis-distributed-data.md
+48
-809
zh-cn/application-dev/reference/apis/js-apis-distributedKVStore.md
...lication-dev/reference/apis/js-apis-distributedKVStore.md
+5790
-0
zh-cn/application-dev/reference/errorcodes/errorcode-distributedKVStore.md
...-dev/reference/errorcodes/errorcode-distributedKVStore.md
+96
-0
未找到文件。
zh-cn/application-dev/database/database-mdds-guidelines.md
浏览文件 @
a39e9b7a
...
...
@@ -6,20 +6,20 @@
## 接口说明
分布式数据相关功能接口请见
[
分布式数据管理
](
../reference/apis/js-apis-distributed-data.md
)
。
分布式数据相关功能接口请见
[
分布式键值数据库
](
../reference/apis/js-apis-distributedKVStore.md
)
。
**表1**
分布式数据服务关键API功能介绍
| 接口名称 | 描述 |
| ------------------------------------------------------------ | ----------------------------------------------- |
| createKVManager(config: KVManagerConfig, callback: AsyncCallback
<
KVManager
>
): void
<br/>
createKVManager(config: KVManagerConfig): Promise
<
KVManager> | 创建一个
`KVManager`
对象实例,用于管理数据库对象。 |
| getKVStore
<
TextendsKVStore
>
(storeId: string, options: Options, callback: AsyncCallback
<
T
>
): void
<br/>
getKVStore
<
TextendsKVStore
>
(storeId: string, options: Options): Promise
<
T
>
| 指定
`Options`
和
`storeId`
,创建并获取
`KVStore`
数据库。 |
| put(key: string, value: Uint8Array
\|
string
\|
number
\|
boolean, callback: AsyncCallback
<
void
>
): void
<br/>
put(key: string, value: Uint8Array
\|
string
\|
number
\|
boolean): Promise
<
void> | 插入和更新数据。 |
| delete(key: string, callback: AsyncCallback
<
void
>
): void
<br/>
delete(key: string): Promise
<
void> | 删除数据。 |
| get(key: string, callback: AsyncCallback
<
Uint8Array\|string\|boolean\|number
>
): void
<br/>
get(key: string): Promise
<
Uint8Array
\|
string
\|
boolean
\|
number> | 查询数据。 |
| on(event: 'dataChange', type: SubscribeType, observer: Callback
<
ChangeNotification
>
): void
<br/>
on(event: 'syncComplete', syncCallback: Callback
<
Array
<
[string,number]
>>
): void | 订阅数据库中数据的变化。 |
| sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void | 在手动模式下,触发数据库同步。 |
| 接口名称 | 描述
|
| ------------------------------------------------------------ | -----------------------------------------------
-------------
|
| createKVManager(config: KVManagerConfig, callback: AsyncCallback
<
KVManager
>
): void
<br/>
createKVManager(config: KVManagerConfig): Promise
<
KVManager> | 创建一个
`KVManager`
对象实例,用于管理数据库对象。
|
| getKVStore
<
TextendsKVStore
>
(storeId: string, options: Options, callback: AsyncCallback
<
T
>
): void
<br/>
getKVStore
<
TextendsKVStore
>
(storeId: string, options: Options): Promise
<
T
>
| 指定
`Options`
和
`storeId`
,创建并获取
指定类型
`KVStore`
数据库。 |
| put(key: string, value: Uint8Array
\|
string
\|
number
\|
boolean, callback: AsyncCallback
<
void
>
): void
<br/>
put(key: string, value: Uint8Array
\|
string
\|
number
\|
boolean): Promise
<
void> | 插入和更新数据。
|
| delete(key: string, callback: AsyncCallback
<
void
>
): void
<br/>
delete(key: string): Promise
<
void> | 删除数据。
|
| get(key: string, callback: AsyncCallback
<
Uint8Array\|string\|boolean\|number
>
): void
<br/>
get(key: string): Promise
<
Uint8Array
\|
string
\|
boolean
\|
number> | 查询数据。
|
| on(event: 'dataChange', type: SubscribeType, observer: Callback
<
ChangeNotification
>
): void
<br/>
on(event: 'syncComplete', syncCallback: Callback
<
Array
<
[string,number]
>>
): void | 订阅数据库中数据的变化。
|
| sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void | 在手动模式下,触发数据库同步。
|
## 开发步骤
...
...
@@ -28,23 +28,25 @@
1.
导入模块。
```
js
import
distributed
Data
from
'
@ohos.data.distributedData
'
;
import
distributed
KVStore
from
'
@ohos.data.distributedKVStore
'
;
```
2.
请求权限(同步操作时进行该步骤)。
需要在
`config.json`
文件里进行配置请求权限(FA模型),示例代码如下:
```json
{
"module": {
"reqPermissions": [
{
"name": "ohos.permission.DISTRIBUTED_DATASYNC"
}
]
}
}
{
"module": {
"reqPermissions": [
{
"name": "ohos.permission.DISTRIBUTED_DATASYNC"
}
]
}
}
```
Stage模型下的权限请求请参见
[
权限声明-Stage模型
](
../security/accesstoken-guidelines.md#stage模型
)
。
这个权限还需要在应用首次启动的时候弹窗获取用户授权,可以通过如下代码实现:
...
...
@@ -52,7 +54,7 @@
```js
// FA模型
import featureAbility from '@ohos.ability.featureAbility';
function grantPermission() {
console.info('grantPermission');
let context = featureAbility.getContext();
...
...
@@ -62,21 +64,21 @@
console.info('failed: ${error}');
})
}
grantPermission();
// Stage模型
import Ability from '@ohos.application.Ability';
let context = null;
function grantPermission() {
class MainAbility extends Ability {
onWindowStageCreate(windowStage) {
let context = this.context;
}
}
let permissions = ['ohos.permission.DISTRIBUTED_DATASYNC'];
context.requestPermissionsFromUser(permissions).then((data) => {
console.log('success: ${data}');
...
...
@@ -84,7 +86,7 @@
console.log('failed: ${error}');
});
}
grantPermission();
```
...
...
@@ -99,7 +101,7 @@
// FA模型获取context
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
// Stage模型获取context
import AbilityStage from '@ohos.application.Ability';
let context = null;
...
...
@@ -108,27 +110,23 @@
context = this.context;
}
}
let kvManager;
try {
const kvManagerConfig = {
bundleName: 'com.example.datamanagertest',
userInfo
:
{
context
:
context
,
userId
:
'
0
'
,
userType
:
distributedData
.
UserType
.
SAME_USER_ID
}
context:context,
}
distributed
Data
.
createKVManager
(
kvManagerConfig
,
function
(
err
,
manager
)
{
distributed
KVStore
.createKVManager(kvManagerConfig, function (err, manager) {
if (err) {
console
.
log
(
'
createKVManager err: ${error}
'
);
console.
error(
`Fail to createKVManager.code is ${err.code},message is ${err.message}`
);
return;
}
console
.
log
(
'
createKVManager success
'
);
console.log('
Succeeded in creating KVManager
');
kvManager = manager;
});
} 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 @@
encrypt: false,
backup: false,
autoSync: false,
kvStoreType
:
distributed
Data
.
KVStoreType
.
SINGLE_VERSION
,
securityLevel
:
distributed
Data
.
SecurityLevel
.
S0
kvStoreType: distributed
KVStore
.KVStoreType.SINGLE_VERSION,
securityLevel: distributed
KVStore.SecurityLevel.S1
};
kvManager.getKVStore('storeId', options, function (err, store) {
if (err) {
console
.
log
(
'
getKVStore err: ${err}
'
);
console.
error(
`Fail to get KVStore: code is ${err.code},message is ${err.message}`
);
return;
}
console
.
log
(
'
getKVStore success
'
);
console.log('
Succeeded in getting KVStore
');
kvStore = store;
});
} 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`)的生命周期内无需重复创建数据库,可直接使用句柄对数据库进行数据的插入等操作。
5. 订阅分布式数据变化。
以下为订阅单版本分布式数据库数据变化通知的代码示例:
```
js
kvStore
.
on
(
'
dataChange
'
,
distributedData
.
SubscribeType
.
SUBSCRIBE_TYPE_ALL
,
function
(
data
)
{
console
.
log
(
"
dataChange callback call data: ${data}
"
);
});
try{
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. 将数据写入分布式数据库。
...
...
@@ -188,15 +190,15 @@
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
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
.
log
(
'
put err: ${error}
'
);
console.
error(
`Fail to put.code is ${err.code},message is ${err.message}`
);
return;
}
console
.
log
(
'
put success
'
);
console.log(
"Succeeded in putting"
);
});
}
catch
(
e
)
{
console
.
log
(
'
An unexpected error occurred. Error: ${e}
'
);
}catch (e) {
console.
error(
`An unexpected error occurred.code is ${e.code},message is ${e.message}`
);
}
```
...
...
@@ -211,18 +213,22 @@
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
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) {
console
.
log
(
'
put err: ${error}
'
);
console.
error(
`Fail to get.code is ${err.code},message is ${err.message}`
);
return;
}
console
.
log
(
'
put success
'
);
kvStore
.
get
(
KEY_TEST_STRING_ELEMENT
,
function
(
err
,
data
)
{
console
.
log
(
'
get success data: ${data}
'
);
console.log(
`Succeeded in getting data:${data}`
);
});
});
}
catch
(
e
)
{
console
.
log
(
'
An unexpected error occurred. Error: ${e}
'
);
}catch (e) {
console.
error(
`Fail to get.code is ${e.code},message is ${e.message}`
);
}
```
...
...
@@ -233,7 +239,7 @@
> **说明**:
>
> 其中`deviceManager`模块的接口均为系统接口。
以下为单版本分布式数据库进行数据同步的代码示例:
```
js
...
...
@@ -254,20 +260,21 @@
}
try{
// 1000表示最大延迟时间为1000ms
kvStore
.
sync
(
deviceIds
,
distributed
Data
.
SyncMode
.
PUSH_ONLY
,
1000
);
kvStore.sync(deviceIds, distributed
KVStore
.SyncMode.PUSH_ONLY, 1000);
} 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`:分布式计算器(
Ark
TS)(API8)(Full SDK)
](
https://gitee.com/openharmony/applications_app_samples/tree/master/Preset/DistributeCalc
)
-
[
`DistributedDataGobang`:分布式五子棋(
Ark
TS)(API9)(Full SDK)
](
https://gitee.com/openharmony/applications_app_samples/tree/master/data/DistributedDataGobang
)
-
[
`DDMQuery`:结果集与谓词(
Ark
TS)(API8)
](
https://gitee.com/openharmony/applications_app_samples/tree/master/data/DDMQuery
)
-
[
`KvStore`:分布式数据库(
Ark
TS)(API8)(Full SDK)
](
https://gitee.com/openharmony/applications_app_samples/tree/master/data/Kvstore
)
- [`DistributedCalc`:分布式计算器(
e
TS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/Preset/DistributeCalc)
- [`DistributedDataGobang`:分布式五子棋(
e
TS)(API9)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/data/DistributedDataGobang)
- [`DDMQuery`:结果集与谓词(
e
TS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/master/data/DDMQuery)
- [`KvStore`:分布式数据库(
e
TS)(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)
\ No newline at end of file
zh-cn/application-dev/reference/apis/Readme-CN.md
浏览文件 @
a39e9b7a
...
...
@@ -63,7 +63,6 @@
-
[
@ohos.commonEvent (公共事件模块)
](
js-apis-commonEvent.md
)
-
[
@ohos.events.emitter (Emitter)
](
js-apis-emitter.md
)
-
[
@ohos.notification (Notification模块)
](
js-apis-notification.md
)
-
[
@ohos.reminderAgent (后台代理提醒)
](
js-apis-reminderAgent.md
)
-
application/
[
EventHub (EventHub)
](
js-apis-eventhub.md
)
-
应用程序包管理
-
[
@ohos.bundle (Bundle模块)
](
js-apis-Bundle.md
)
...
...
@@ -120,6 +119,7 @@
-
资源调度
-
[
@ohos.backgroundTaskManager (后台任务管理)
](
js-apis-backgroundTaskManager.md
)
-
[
@ohos.distributedMissionManager (分布式任务管理)
](
js-apis-distributedMissionManager.md
)
-
[
@ohos.reminderAgentManager (后台代理提醒)
](
js-apis-reminderAgentManager.md
)
-
[
@ohos.workScheduler (延迟任务调度)
](
js-apis-workScheduler.md
)
-
[
@ohos.WorkSchedulerExtensionAbility (延迟任务调度回调)
](
js-apis-WorkSchedulerExtensionAbility.md
)
-
定制管理
...
...
@@ -140,8 +140,8 @@
-
[
@ohos.data.dataShare (数据共享)
](
js-apis-data-dataShare.md
)
-
[
@ohos.data.dataSharePredicates (数据共享谓词)
](
js-apis-data-dataSharePredicates.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.distributedKVStore (分布式键值数据库)
](
js-apis-distributedKVStore.md
)
-
[
@ohos.data.preferences (首选项)
](
js-apis-data-preferences.md
)
-
[
@ohos.data.rdb (关系型数据库)
](
js-apis-data-rdb.md
)
-
[
@ohos.data.ValuesBucket (数据集)
](
js-apis-data-ValuesBucket.md
)
...
...
@@ -208,8 +208,8 @@
-
[
@ohos.systemTime (系统时间、时区)
](
js-apis-system-time.md
)
-
[
@ohos.systemTimer(系统定时器)
](
js-apis-system-timer.md
)
-
[
@ohos.wallpaper (壁纸)
](
js-apis-wallpaper.md
)
-
[
@ohos.web.webview(Web)
](
js-apis-webview.md
)
-
[
Timer (定时器)
](
js-apis-timer.md
)
-
设备管理
-
[
@ohos.batteryInfo (电量信息)
](
js-apis-battery-info.md
)
...
...
@@ -270,7 +270,9 @@
-
已停止维护的接口
-
[
@ohos.bytrace (性能打点)
](
js-apis-bytrace.md
)
-
[
@ohos.data.storage (轻量级存储)
](
js-apis-data-storage.md
)
-
[
@ohos.data.distributedData (分布式数据管理)
](
js-apis-distributed-data.md
)
-
[
@ohos.prompt (弹窗)
](
js-apis-prompt.md
)
-
[
@ohos.reminderAgent (后台代理提醒)
](
js-apis-reminderAgent.md
)
-
[
@system.app (应用上下文)
](
js-apis-system-app.md
)
-
[
@system.battery (电量信息)
](
js-apis-system-battery.md
)
-
[
@system.bluetooth (蓝牙)
](
js-apis-system-bluetooth.md
)
...
...
zh-cn/application-dev/reference/apis/js-apis-distributed-data.md
浏览文件 @
a39e9b7a
...
...
@@ -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<KVManager>
| callback | AsyncCallback
<
[KVManager](#kvmanager)
>
| 是 | 回调函数。返回创建的KVManager对象实例。 |
**示例:**
```
js
Stage模型下的示例:
```
ts
import
AbilityStage
from
'
@ohos.application.Ability
'
let
kvManager
;
export
default
class
MyAbilityStage
extends
AbilityStage
{
onCreate
()
{
console
.
log
(
"
MyAbilityStage onCreate
"
)
let
context
=
this
.
context
const
kvManagerConfig
=
{
context
:
context
,
bundleName
:
'
com.example.datamanagertest
'
,
userInfo
:
{
userId
:
'
0
'
,
userType
:
distributedData
.
UserType
.
SAME_USER_ID
}
try
{
const
kvManagerConfig
=
{
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
...
...
@@ -112,52 +86,28 @@ createKVManager(config: KVManagerConfig): Promise<KVManager>
| Promise
<
[KVManager](#kvmanager)
>
| Promise对象。返回创建的KVManager对象实例。 |
**示例:**
```
js
Stage模型下的示例:
```
ts
import
AbilityStage
from
'
@ohos.application.Ability
'
let
kvManager
;
export
default
class
MyAbilityStage
extends
AbilityStage
{
onCreate
()
{
console
.
log
(
"
MyAbilityStage onCreate
"
)
let
context
=
this
.
context
const
kvManagerConfig
=
{
context
:
context
,
bundleName
:
'
com.example.datamanagertest
'
,
userInfo
:
{
userId
:
'
0
'
,
userType
:
distributedData
.
UserType
.
SAME_USER_ID
}
try
{
const
kvManagerConfig
=
{
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
...
...
@@ -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
)
| 是 | 调用方的用户信息。 |
| bundleName | string | 是 | 调用方的包名。 |
...
...
@@ -2160,7 +2109,6 @@ try {
}
```
### put
put(key: string, value: Uint8Array | string | number | boolean): Promise
<
void
>
...
...
@@ -2282,303 +2230,6 @@ try {
}
```
### delete<sup>9+</sup>
delete(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback
<
void
>
)
从数据库中删除符合predicates条件的键值对,使用callback异步回调。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| predicates |
[
DataSharePredicates
](
js-apis-data-dataSharePredicates.md#datasharepredicates
)
| 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。|
| callback | AsyncCallback
<
void
>
| 是 |回调函数。 |
**示例:**
```
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
<
void
>
从数据库中删除符合predicates条件的键值对,使用Promise异步回调。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| predicates |
[
DataSharePredicates
](
js-apis-data-dataSharePredicates.md#datasharepredicates
)
| 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。|
**返回值:**
| 类型 | 说明 |
| ------ | ------- |
| Promise
<
void
>
|无返回结果的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
<
void
>
):void
以指定名称备份数据库,使用callback异步回调。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| file | string | 是 | 备份数据库的指定名称,不能为空且长度不大于
[
MAX_KEY_LENGTH
](
#constants
)
。 |
| callback | AsyncCallback
<
void
>
| 是 | 回调函数。当以指定名称备份数据库成功,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
<
void
>
以指定名称备份数据库,使用Promise异步回调。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| file | string | 是 | 备份数据库的指定名称,不能为空且长度不大于
[
MAX_KEY_LENGTH
](
#constants
)
。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------- |
| Promise
<
void
>
| 无返回结果的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
<
void
>
):void
从指定的数据库文件恢复数据库,使用callback异步回调。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| file | string | 是 | 指定的数据库文件名称,不能为空且长度不大于
[
MAX_KEY_LENGTH
](
#constants
)
。 |
| callback | AsyncCallback
<
void
>
| 是 | 回调函数。当从指定的数据库文件恢复数据库成功,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
<
void
>
从指定的数据库文件恢复数据库,使用Promise异步回调。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| file | string | 是 | 指定的数据库文件名称,不能为空且长度不大于
[
MAX_KEY_LENGTH
](
#constants
)
。 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ------------------------- |
| Promise
<
void
>
| 无返回结果的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
<
string
>
, callback: AsyncCallback
<
Array
<
[string, number]
>>
):void
根据指定名称删除备份文件,使用callback异步回调。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| -------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ |
| files | Array
<
string
>
| 是 | 删除备份文件所指定的名称,不能为空且长度不大于
[
MAX_KEY_LENGTH
](
#constants
)
。 |
| callback | AsyncCallback
<
Array
<
[string, number]
>>
| 是 | 回调函数,返回删除备份的文件名及其处理结果。 |
**示例:**
```
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
<
string
>
): Promise
<
Array
<
[string, number]
>>
根据指定名称删除备份文件,使用Promise异步回调。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ------ | -------- | ---- | ------------------------------------------------------------ |
| files | Array
<
string
>
| 是 | 删除备份文件所指定的名称,不能为空且长度不大于
[
MAX_KEY_LENGTH
](
#constants
)
。 |
**返回值:**
| 类型 | 说明 |
| -------------------------------------------- | ----------------------------------------------- |
| Promise
<
Array
<
[string, number]
>>
| 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(event: 'dataChange', type: SubscribeType, listener: Callback
<
ChangeNotification
>
): void
...
...
@@ -2604,7 +2255,6 @@ kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, fun
});
```
### on('syncComplete')
on(event: 'syncComplete', syncCallback: Callback
<
Array
<
[string, number]
>>
): void
...
...
@@ -2665,43 +2315,6 @@ class KvstoreModel {
}
```
### off('syncComplete')<sup>9+</sup>
off(event: 'syncComplete', syncCallback?: Callback
<
Array
<
[string, number]
>>
): void
取消订阅同步完成事件回调通知,此方法为同步方法。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
| syncCallback |Callback
<
Array
<
[string, number]
>>
| 否 |用于向调用方发送同步结果的回调。 |
**示例:**
```
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(entries: Entry[], callback: AsyncCallback
<
void
>
): void
...
...
@@ -2783,112 +2396,24 @@ try {
type
:
distributedData
.
ValueType
.
STRING
,
value
:
'
batch_test_string_value
'
}
}
entries
.
push
(
entry
);
}
console
.
log
(
'
entries:
'
+
JSON
.
stringify
(
entries
));
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
<
ValuesBucket
>
, callback: AsyncCallback
<
void
>
): void
将值写入KvStore数据库,使用callback异步回调。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| value |Array
<
[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)
>
| 是 |表示要插入的数据。 |
| callback |Asyncallback
<
void
>
|是 |回调函数。 |
**示例:**
```
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
<
ValuesBucket
>
): Promise
<
void
>
将valuesbucket类型的值写入KvStore数据库,使用Promise异步回调。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| value |Array
<
[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)
>
| 是 |表示要插入的数据。 |
**返回值:**
| 类型 | 说明 |
| ------ | ------- |
| Promise
<
void
>
|五返回结果的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
)
=>
{
}
entries
.
push
(
entry
);
}
console
.
log
(
'
entries:
'
+
JSON
.
stringify
(
entries
));
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
));
}
```
### deleteBatch<sup>8+</sup>
...
...
@@ -3924,85 +3449,6 @@ try {
}
```
### getResultSet<sup>9+</sup>
getResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback
<
KvStoreResultSet
>
): void
获取与指定Predicate对象匹配的KvStoreResultSet对象,使用callback异步回调。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| predicates |
[
DataSharePredicates
](
js-apis-data-dataSharePredicates.md#datasharepredicates
)
| 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。 |
| callback |AsyncCallback
<
[KvStoreResultSet](#kvstoreresultset8)
>
| 是 |回调函数,获取与指定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
<
KvStoreResultSet
>
获取与指定Predicate对象匹配的KvStoreResultSet对象,使用Promise异步回调。
**系统接口:**
此接口为系统接口。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| predicates |
[
DataSharePredicates
](
js-apis-data-dataSharePredicates.md#datasharepredicates
)
| 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。 |
**返回值:**
| 类型 | 说明 |
| ------ | ------- |
|Promise
<
[KvStoreResultSet](#kvstoreresultset8)
>
|无返回结果的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(resultSet: KvStoreResultSet, callback: AsyncCallback
<
void
>
): void
...
...
@@ -4338,67 +3784,6 @@ class KvstoreModel {
}
```
### on('dataChange')<sup>9+</sup>
on(event: 'dataChange', type: SubscribeType, listener: Callback
<
ChangeNotification
>
): void
订阅指定类型的数据变更通知,此方法为同步方法。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| type |
[
SubscribeType
](
#subscribetype
)
| 是 |表示订阅的类型。 |
| listener |Callback
<
[ChangeNotification](#changenotification)
>
| 是 |回调函数。 |
**示例:**
```
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
<
ChangeNotification
>
): void
取消订阅数据变更通知,此方法为同步方法。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |取消订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| listener |Callback
<
[ChangeNotification](#changenotification)
>
|否 |回调函数。 |
**示例:**
```
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>
...
...
@@ -4425,48 +3810,6 @@ let kvStore;
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(defaultAllowedDelayMs: number, callback: AsyncCallback
<
void
>
): void
...
...
@@ -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(event: 'syncComplete', syncCallback: Callback
<
Array
<
[string, number]
>>
): void
...
...
@@ -5848,68 +5149,6 @@ class KvstoreModel {
}
```
### on('dataChange')<sup>9+</sup>
on(event: 'dataChange', type: SubscribeType, listener: Callback
<
ChangeNotification
>
): void
订阅指定类型的数据变更通知,此方法为同步方法。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| type |
[
SubscribeType
](
#subscribetype
)
| 是 |表示订阅的类型。 |
| listener |Callback
<
[ChangeNotification](#changenotification)
>
| 是 |回调函数。 |
**示例:**
```
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
<
ChangeNotification
>
): void
取消订阅数据变更通知,此方法为同步方法。
**系统能力:**
SystemCapability.DistributedDataManager.KVStore.Core
**参数:**
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ---- | ----------------------- |
| event |string | 是 |取消订阅的事件名,固定为'dataChange',表示数据变更事件。 |
| listener |Callback
<
[ChangeNotification](#changenotification)
>
|否 |回调函数。 |
**示例:**
```
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
同步模式枚举。
...
...
zh-cn/application-dev/reference/apis/js-apis-distributedKVStore.md
0 → 100644
浏览文件 @
a39e9b7a
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
zh-cn/application-dev/reference/errorcodes/errorcode-distributedKVStore.md
0 → 100644
浏览文件 @
a39e9b7a
# 分布式键值数据库错误码
## 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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录