js-apis-distributed-data.md 20.1 KB
Newer Older
A
asfasdff 已提交
1
# 分布式数据管理
Z
zengyawen 已提交
2

A
asfasdff 已提交
3 4
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
5

A
asfasdff 已提交
6 7

## 导入模块
Z
zengyawen 已提交
8 9 10 11 12

```
import distributedData from '@ohos.data.distributedData';
```

A
asfasdff 已提交
13 14

## 权限
Z
zengyawen 已提交
15 16 17 18




A
asfasdff 已提交
19 20 21
## distributedData.createKVManager

createKVManager(config: KVManagerConfig, callback: AsyncCallback<KVManager>): void
Z
zengyawen 已提交
22 23 24

创建一个KVManager对象实例,用于管理数据库对象,并通过callback方式返回,此方法为异步方法。

A
asfasdff 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | config | [KVManagerConfig](#kvmanagerconfig) | 是 | 提供KVManager实例的配置信息,包括调用方的包名和用户信息。 |
  | callback | AsyncCallback<[KVManager](#kvmanager)> | 是 | KVManager实例创建时调用的回调,返回KVManager对象实例。 |

- 示例:
  ```
  let kvManager;
  try {
      const kvManagerConfig = {
          bundleName : 'com.example.datamanagertest',
          userInfo : {
              userId : '0',
              userType : 0
          }
      }
      distributedData.createKVManager(kvManagerConfig, function (err, manager) {
          if (err) {
              console.log("createKVManager err: "  + JSON.stringify(err));
              return;
          }
          console.log("createKVManager success");
          kvManager = manager;
      });
  } catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


## distributedData.createKVManager

createKVManager(config: KVManagerConfig): Promise<KVManager>
Z
zengyawen 已提交
59 60 61

创建一个KVManager对象实例,用于管理数据库对象,并通过Promise方式返回,此方法为异步方法。

A
asfasdff 已提交
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | config | [KVManagerConfig](#kvmanagerconfig) | 是 | 提供KVManager实例的配置信息,包括调用方的包名和用户信息。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise<[KVManager](#kvmanager)> | 指定的Promise回调方法,返回创建的KVManager对象实例。 |

- 示例:
  ```
  let kvManager;
  try {
      const kvManagerConfig = {
          bundleName : 'com.example.datamanagertest',
          userInfo : {
              userId : '0',
              userType : 0
          }
      }
      distributedData.createKVManager(kvManagerConfig).then((manager) => {
          console.log("createKVManager success");
          kvManager = manager;
      }).catch((err) => {
          console.log("createKVManager err: "  + JSON.stringify(err));
      });
  } catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


## KVManagerConfig
Z
zengyawen 已提交
96 97 98

提供KVManager实例的配置信息,包括调用方的包名和用户信息。

A
asfasdff 已提交
99 100 101 102 103 104 105
| 名称 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| userInfo | [UserInfo](#userinfo) | 是 | 调用方的用户信息。 |
| bundleName | string | 是 | 调用方的包名。 |


## UserInfo
Z
zengyawen 已提交
106 107 108

用户信息。

A
asfasdff 已提交
109 110 111 112 113 114 115
| 名称 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| userId | string | 是 | 指示要设置的用户ID。 |
| userType | [UserType](#usertype) | 是 | 指示要设置的用户类型。 |


## UserType
Z
zengyawen 已提交
116 117 118

用户类型。

A
asfasdff 已提交
119 120 121 122 123 124
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
| SAME_USER_ID | 0 | 使用同一帐户登录不同设备的用户。 |


## KVManager
Z
zengyawen 已提交
125 126 127 128

数据管理实例,用于获取KVStore的相关信息。在调用KVManager的方法前,需要先通过createKVManager构建一个KVManager实例。


A
asfasdff 已提交
129 130 131
### getKVStore

getKVStore<T extends KVStore>(storeId: string, options: Options, callback: AsyncCallback<T>): void
Z
zengyawen 已提交
132 133 134

通过指定Options和storeId,创建并获取KVStore数据库,并通过callback方式返回,此方法为异步方法。

A
asfasdff 已提交
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | storeId | string | 是 | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#Constants)。 |
  | options | [Options](#options) | 是 | 创建KVStore实例的配置信息。 |
  | callback | AsyncCallback&lt;T&gt;<br/>&lt;T&nbsp;extends&nbsp;KVStore&gt; | 是 | 创建KVStore实例的回调,返回KVStore对象实例。 |

- 示例:
  ```
  let kvStore;
  try {
      const options = {
          createIfMissing : true,
          encrypt : false,
          backup : false,
          autoSync : true,
          kvStoreType : 1,
          securityLevel : 3,
      };
      kvManager.getKVStore('storeId', options, function (err, store) {
          if (err) {
              console.log("getKVStore err: "  + JSON.stringify(err));
              return;
          }
          console.log("getKVStore success");
          kvStore = store;
      });
  } catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


### getKVStore

getKVStore&lt;T extends KVStore&gt;(storeId: string, options: Options): Promise&lt;T&gt;
Z
zengyawen 已提交
171 172 173

通过指定Options和storeId,创建并获取KVStore数据库,并通过Promise方式返回,此方法为异步方法。

A
asfasdff 已提交
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | storeId | string | 是 | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#Constants)。 |
  | options | [Options](#options) | 是 | 创建KVStore实例的配置信息。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;T&gt;<br/>&lt;T&nbsp;extends&nbsp;KVStore&gt; | 指定的Promise回调方法,返回创建的KVStore数据库实例。 |

- 示例:
  ```
  let kvStore;
  try {
      const options = {
          createIfMissing : true,
          encrypt : false,
          backup : false,
          autoSync : true,
          kvStoreType : 1,
          securityLevel : 3,
      };
      kvManager.getKVStore('storeId', options).then((store) => {
          console.log("getKVStore success");
          kvStore = store;
      }).catch((err) => {
          console.log("getKVStore err: "  + JSON.stringify(err));
      });
  } catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


## Options
Z
zengyawen 已提交
210 211 212

用于提供创建数据库的配置信息。

A
asfasdff 已提交
213 214 215 216 217 218 219 220 221 222 223
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| createIfMissing | boolean | 否 | 当数据库文件不存在时是否创建数据库,默认创建。 |
| encrypt | boolean | 否 | 设置数据库文件是否加密,默认不加密。 |
| backup | boolean | 否 | 设置数据库文件是否备份,默认备份。 |
| autoSync | boolean | 否 | 设置数据库文件是否自动同步,默认不自动同步。 |
| kvStoreType | [KVStoreType](#kvstoretype) | 否 | 设置要创建的数据库类型,默认为多设备协同数据库。 |
| securityLevel | [SecurityLevel](#securitylevel) | 否 | 设置数据库安全级别,默认不设置安全级别。 |


## KVStoreType
Z
zengyawen 已提交
224 225 226

用于指定创建的数据库的类型。

A
asfasdff 已提交
227 228 229 230 231 232 233 234
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
| DEVICE_COLLABORATION | 0 | 表示多设备协同数据库。 |
| SINGLE_VERSION | 1 | 表示单版本数据库。 |
| MULTI_VERSION | 2 | 表示多版本数据库。此类型当前不允许使用。 |


## SecurityLevel
Z
zengyawen 已提交
235 236 237

用于指定创建的数据库的安全级别。

A
asfasdff 已提交
238 239 240 241 242 243 244 245 246 247 248
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
| NO_LEVEL | 0 | 表示数据库不设置安全级别。 |
| S0 | 1 | 表示数据库的安全级别为公共级别安全。 |
| S1 | 2 | 表示数据库的安全级别为低级别安全,当数据泄露时会产生较低影响。 |
| S2 | 3 | 表示数据库的安全级别为中级别安全,当数据泄露时会产生较大影响。 |
| S3 | 5 | 表示数据库的安全级别为高级别安全,当数据泄露时会产生重大影响。 |
| S4 | 6 | 表示数据库的安全级别为关键级别安全,当数据泄露时会产生严重影响。 |


## Constants
Z
zengyawen 已提交
249 250 251

KVStore常量。

A
asfasdff 已提交
252 253 254 255 256 257 258 259 260 261 262
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
| MAX_KEY_LENGTH | 1024 | 数据库中Key允许最大长度,单位字节。 |
| MAX_VALUE_LENGTH | 4194303 | 数据库中Value允许的最大长度,单位字节。 |
| MAX_KEY_LENGTH_DEVICE | 896 | 最大设备坐标密钥长度。 |
| MAX_STORE_ID_LENGTH | 128 | 数据库标识符允许的最大长度,单位字节。 |
| MAX_QUERY_LENGTH | 512000 | 最大查询长度。 |
| MAX_BATCH_SIZE | 128 | 最大批处理操作大小。 |


## KVStore
Z
zengyawen 已提交
263 264 265 266

KVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅同步完成的方法。在调用KVStore的方法前,需要先通过getKVStore构建一个KVStore实例。


A
asfasdff 已提交
267 268 269
### put

put(key: string, value: Uint8Array | string | number | boolean, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
270 271 272

添加指定类型键值对到数据库,并通过callback方式返回,此方法为异步方法。

A
asfasdff 已提交
273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#Constants)。 |
  | value | Uint8Array&nbsp;\|&nbsp;string&nbsp;\|&nbsp;number&nbsp;\|&nbsp;boolean | 是 | 要添加数据的value,支持Uint8Array、number&nbsp;&nbsp;string&nbsp;、boolean,<br/>Uint8Array、string&nbsp;的长度不大于[MAX_VALUE_LENGTH](#Constants)。 |
  | callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。 |

- 示例
  ```
  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) {
          if (err != undefined) {
              console.log("put err: " + JSON.stringify(err));
              return;
          }
          console.log("put success");
      });
  }catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


### put

put(key: string, value: Uint8Array | string | number | boolean): Promise&lt;void&gt;
Z
zengyawen 已提交
301 302 303

添加指定类型键值对到数据库,并通过Promise方式返回,此方法为异步方法。

A
asfasdff 已提交
304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335

- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#Constants)。 |
  | value | Uint8Array&nbsp;\|&nbsp;string&nbsp;\|&nbsp;number&nbsp;\|&nbsp;boolean | 是 | 要添加数据的value,支持Uint8Array、number&nbsp;&nbsp;string&nbsp;、boolean,<br/>Uint8Array、string&nbsp;的长度不大于[MAX_VALUE_LENGTH](#Constants)。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;void&gt; | Promise实例,用于异步处理。 |


- 示例
  ```
  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).then((data) => {
          console.log("put success: " + JSON.stringify(data));
      }).catch((err) => {
          console.log("put err: " + JSON.stringify(err));
      });
  }catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


### delete

delete(key: string, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
336 337 338

从数据库中删除指定键值的数据,并通过callback方式返回,此方法为异步方法。

A
asfasdff 已提交
339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#Constants)。 |
  | callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。 |

- 示例
  ```
  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) {
          if (err != undefined) {
              console.log("put err: " + JSON.stringify(err));
              return;
          }
          console.log("put success");
          kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err,data) {
              if (err != undefined) {
                  console.log("delete err: " + JSON.stringify(err));
                  return;
              }
              console.log("delete success");
          });
      });
  }catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


### delete

delete(key: string): Promise&lt;void&gt;
Z
zengyawen 已提交
373 374 375

从数据库中删除指定键值的数据,并通过Promise方式返回,此方法为异步方法。

A
asfasdff 已提交
376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#Constants)。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;void&gt; | Promise实例,用于异步处理。 |

- 示例
  ```
  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).then((data) => {
          console.log("put success: " + JSON.stringify(data));
          kvStore.delete(KEY_TEST_STRING_ELEMENT).then((data) => {
              console.log("delete success");
          }).catch((err) => {
              console.log("delete err: " + JSON.stringify(err));
          });
      }).catch((err) => {
          console.log("put err: " + JSON.stringify(err));
      });
  }catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


### on

on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;ChangeNotification&gt;): void
Z
zengyawen 已提交
410 411 412

订阅指定类型的数据变更通知,此方法为同步方法。

A
asfasdff 已提交
413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430
- 参数:
  | 参数名 | 类型 | 说明 |
  | -------- | -------- | -------- |
  | event | 'dataChange' | 回调函数名称。 |
  | type | [SubscribeType](#subscribetype) | 表示订阅的类型。 |
  | observer | Callback&lt;[ChangeNotification](#changenotification)&gt; | 回调函数。 |

- 示例
  ```
  kvStore.on('dataChange', 2, function (data) {
      console.log("dataChange callback call data: " + JSON.stringify(data));
  });
  ```


### on

on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
Z
zengyawen 已提交
431 432 433

订阅数据同步完成通知,此方法为同步方法。

A
asfasdff 已提交
434 435 436 437 438 439 440 441 442 443 444 445 446 447 448
- 参数:
  | 参数名 | 类型 | 说明 |
  | -------- | -------- | -------- |
  | event | 'syncComplete' | 回调函数名称。 |
  | syncCallback | Callback&lt;Array&lt;[string,&nbsp;number]&gt;&gt; | 回调函数。 |

- 示例
  ```
  kvStore.on('syncComplete', function (data) {
      console.log("syncComplete callback call data: " + data);
  });
  ```


## SubscribeType
Z
zengyawen 已提交
449 450 451

描述订阅类型。

A
asfasdff 已提交
452 453 454 455 456 457 458 459
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
| SUBSCRIBE_TYPE_LOCAL | 0 | 表示订阅本地数据变更。 |
| SUBSCRIBE_TYPE_REMOTE | 1 | 表示订阅远端数据变更。 |
| SUBSCRIBE_TYPE_ALL | 2 | 表示订阅远端和本地数据变更。 |


## ChangeNotification
Z
zengyawen 已提交
460 461 462

数据变更时通知的对象,包括数据插入的数据、更新的数据、删除的数据和设备ID。

A
asfasdff 已提交
463 464 465 466 467 468 469 470 471
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| insertEntries | [Entry](#entry)[] | 是 | 是 | 数据添加记录。 |
| updateEntries | [Entry](#entry)[] | 是 | 是 | 数据更新记录。 |
| deleteEntries | [Entry](#entry)[] | 是 | 是 | 数据删除记录。 |
| deviceId | string | 是 | 是 | 设备ID,此处为设备UUID。 |


## Entry
Z
zengyawen 已提交
472 473 474

存储在数据库中的键值对。

A
asfasdff 已提交
475 476 477 478 479 480 481
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| key | string | 是 | 是 | 键值。 |
| value | [Value](#value) | 是 | 是 | 值对象。 |


## Value
Z
zengyawen 已提交
482 483 484

存储在数据库中的对象。

A
asfasdff 已提交
485 486 487 488 489 490 491
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| type | [ValueType](#valuetype) | 是 | 是 | 值类型。 |
| value | Uint8Array&nbsp;\|&nbsp;string&nbsp;\|&nbsp;number&nbsp;\|&nbsp;boolean | 是 | 是 | 值,Uint8Array、string&nbsp;的长度不大于[MAX_VALUE_LENGTH](#Constants)。 |


## ValueType
Z
zengyawen 已提交
492 493 494 495 496

用于表示数据类型。

只能被内部应用使用。

A
asfasdff 已提交
497 498 499 500 501 502 503 504 505 506 507
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
| STRING | 0 | 表示值类型为字符串。 |
| INTEGER | 1 | 表示值类型为整数。 |
| FLOAT | 2 | 表示值类型为浮点数。 |
| BYTE_ARRAY | 3 | 表示值类型为字节数组。 |
| BOOLEAN | 4 | 表示值类型为布尔值。 |
| DOUBLE | 5 | 表示值类型为双浮点数。 |


## SingleKVStore
Z
zengyawen 已提交
508 509 510 511

单版本分布式数据库,继承自KVStore,提供查询数据和同步数据的方法。在调用SingleKVStore的方法前,需要先通过getKVStore构建一个KVStore实例。


A
asfasdff 已提交
512 513 514
### get

get(key: string, callback: AsyncCallback&lt;Uint8Array | string | boolean | number&gt;): void
Z
zengyawen 已提交
515 516 517

获取指定键的值,并通过callback方式返回,此方法为异步方法。

A
asfasdff 已提交
518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#Constants)。 |
  | callback | AsyncCallback&lt;Uint8Array&nbsp;\|&nbsp;string&nbsp;\|&nbsp;boolean&nbsp;\|&nbsp;number&gt; | 是 | 回调函数,获取查询的值。 |

- 示例
  ```
  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) {
          if (err != undefined) {
              console.log("put err: " + JSON.stringify(err));
              return;
          }
          console.log("put success");
          kvStore.get(KEY_TEST_STRING_ELEMENT, function (err,data) {
              console.log("get success data: " + data);
          });
      });
  }catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


### get

get(key: string): Promise&lt;Uint8Array | string | boolean | number&gt;
Z
zengyawen 已提交
548 549 550

获取指定键的值,并通过Promise方式返回,此方法为异步方法。

A
asfasdff 已提交
551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586

- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | key | string | 是 | 要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#Constants)。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;Uint8Array&nbsp;\|&nbsp;string&nbsp;\|&nbsp;boolean&nbsp;\|&nbsp;number&gt; | Promise实例,用于获取异步返回结果。 |


- 示例
  ```
  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).then((data) => {
          console.log("put success: " + JSON.stringify(data));
          kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
              console.log("get success data: " + data);
          }).catch((err) => {
              console.log("get err: " + JSON.stringify(err));
          });
      }).catch((err) => {
          console.log("put err: " + JSON.stringify(err));
      });
  }catch (e) {
      console.log("An unexpected error occurred. Error:" + e);
  }
  ```


### sync

sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void
Z
zengyawen 已提交
587 588 589

在手动同步模式下,触发数据库同步,此方法为同步方法。

A
asfasdff 已提交
590 591 592 593 594 595 596 597 598 599 600 601 602 603
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | deviceIdList | string[] | 是 | 同一组网环境下,需要同步的设备的deviceId列表。 |
  | mode | [SyncMode](#syncmode) | 是 | 同步类型。 |
  | allowedDelayMs | number | 否 | 可选参数,允许延时时间,单位:ms(毫秒)。 |

- 示例:
  ```
  kvStore.sync(deviceIds, 1, 1000);
  ```


## SyncMode
Z
zengyawen 已提交
604 605 606

用于指定同步模式。

A
asfasdff 已提交
607 608 609 610 611
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
| PULL_ONLY | 0 | 表示只能从远端拉取数据到本端。 |
| PUSH_ONLY | 1 | 表示只能从本端推送数据到对端。 |
| PUSH_PULL | 2 | 表示从本端推送数据到远端,然后从远端拉取数据到本端。 |