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

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

6

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

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



15 16

## distributedData.createKVManager
Z
zengyawen 已提交
17

A
asfasdff 已提交
18
createKVManager(config: KVManagerConfig, callback: AsyncCallback<KVManager>): void
Z
zengyawen 已提交
19 20 21

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

W
wufengshan 已提交
22 23
**系统能力**:SystemCapability.DistributedDataManager.KVStore.Core。

24 25 26 27 28 29
- 参数:

| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| config | [KVManagerConfig](#kvmanagerconfig) | 是  | 提供KVManager实例的配置信息,包括调用方的包名和用户信息。 |
| callback | AsyncCallback<[KVManager](#kvmanager)> | 是  | KVManager实例创建时调用的回调,返回KVManager对象实例。 |
A
asfasdff 已提交
30 31 32 33 34 35 36 37 38 39 40


-   示例:

    ```
    let kvManager;
    try {
        const kvManagerConfig = {
            bundleName : 'com.example.datamanagertest',
            userInfo : {
                userId : '0',
A
asfasdff 已提交
41
                userType : distributedData.UserType.SAME_USER_ID
A
asfasdff 已提交
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
            }
        }
        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);
    }
    ```

57
## distributedData.createKVManager
A
asfasdff 已提交
58

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

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

W
wufengshan 已提交
63 64
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。

A
asfasdff 已提交
65
-   参数:
Z
zengyawen 已提交
66

67 68 69
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| config |[KVManagerConfig](#kvmanager) | 是  | 提供KVManager实例的配置信息,包括调用方的包名和用户信息。 |
Z
zengyawen 已提交
70

A
asfasdff 已提交
71 72
-   返回值:

73 74 75
| 类型 | 说明 |
| -------- | -------- |
| Promise<[KVManager](#kvmanager)> | 指定的Promise回调方法,返回创建的KVManager对象实例。 |
Z
zengyawen 已提交
76

A
asfasdff 已提交
77 78 79 80 81 82 83 84 85
-   示例:

    ```
    let kvManager;
    try {
        const kvManagerConfig = {
            bundleName : 'com.example.datamanagertest',
            userInfo : {
                userId : '0',
A
asfasdff 已提交
86
                userType : distributedData.UserType.SAME_USER_ID
A
asfasdff 已提交
87 88 89 90 91 92 93 94 95 96 97 98 99 100
            }
        }
        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);
    }
    ```


101
## KVManagerConfig
Z
zengyawen 已提交
102 103 104

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

W
wufengshan 已提交
105 106
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

107 108 109 110 111 112 113 114
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userInfo | [UserInfo](#userinfo) | 是  | 调用方的用户信息。 |
| bundleName | string | 是  | 调用方的包名。 |



## UserInfo
Z
zengyawen 已提交
115 116 117

用户信息。

W
wufengshan 已提交
118 119
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

120 121 122 123 124 125 126
| 名称 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userId | string | 是  | 指示要设置的用户ID。 |
| userType | [UserType](#usertype) | 是  | 指示要设置的用户类型。 |


## UserType
Z
zengyawen 已提交
127 128 129

用户类型。

W
wufengshan 已提交
130 131
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

132 133 134 135 136 137
| 名称 | 默认值 | 说明 |
| ----- | ------ | ------ |
| SAME_USER_ID | 0 | 使用同一帐户登录不同设备的用户。 |


## KVManager
Z
zengyawen 已提交
138 139 140

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

W
wufengshan 已提交
141 142


143
### getKVStore
Z
zengyawen 已提交
144

145
getKVStore<T extends KVStore>(storeId: string, options: Options, callback: AsyncCallback<T>): void
Z
zengyawen 已提交
146 147 148

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

W
wufengshan 已提交
149 150
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。

151
- 参数:
A
asfasdff 已提交
152

153 154 155 156 157
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| storeId | string | 是  | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| options | [Options](#options) | 是  | 创建KVStore实例的配置信息。 |
| callback | AsyncCallback<T><T extends KVStore> | 是  | 创建KVStore实例的回调,返回KVStore对象实例。 |
A
asfasdff 已提交
158 159 160 161 162

-   示例:

    ```
    let kvStore;
A
asfasdff 已提交
163
    let kvManager;
A
asfasdff 已提交
164 165 166 167 168 169
    try {
        const options = {
            createIfMissing : true,
            encrypt : false,
            backup : false,
            autoSync : true,
A
asfasdff 已提交
170 171
            kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
            securityLevel : distributedData.SecurityLevel.S2,
A
asfasdff 已提交
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
        };
        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);
    }
    ```


187
### getKVStore
A
asfasdff 已提交
188

A
asfasdff 已提交
189
getKVStore<T extends KVStore>(storeId: string, options: Options): Promise<T>
Z
zengyawen 已提交
190 191 192

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

W
wufengshan 已提交
193 194
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。

195
- 参数:
A
asfasdff 已提交
196

197 198 199 200
| 参数名   | 参数类型                | 必填  | 说明    |
| ------- | ---------------------- | ---- | -------------------- |
| storeId  | string      | 是   | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| options  | [Options](#options)   | 是   | 创建KVStore实例的配置信息。|
A
asfasdff 已提交
201 202


203
-   返回值:
A
asfasdff 已提交
204

205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
| 类型                                    | 说明        |
| -------------------------------------- | ------------------------ |
| Promise<T> <T extends KVStore> | 指定的Promise回调方法,返回创建的KVStore数据库实例。 |


- 示例:

  ```
  let kvStore;
  let kvManager;
  try {
      const options = {
          createIfMissing : true,
          encrypt : false,
          backup : false,
          autoSync : true,
          kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
          securityLevel : distributedData.SecurityLevel.S2,
      };
      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);
  }
  ```
A
asfasdff 已提交
234

A
asfasdff 已提交
235
### closeKVStore<sup>8+</sup> ###
A
asfasdff 已提交
236

237
closeKVStore(appId: string, storeId: string, kvStore: KVStore, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
238 239 240

通过storId的值关闭指定的kvStore数据库,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
241
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
242

243 244 245 246 247 248 249 250 251
- 参数:


| 参数名   | 参数类型              | 必填 | 说明         |
| ------- | -----------------   | ---- | --------------------------- |
| appId    | string              | 是   | 所调用数据库方的包名。         |
| storeId  | string  | 是   | 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| kvStore  | [KVStore](#kvstore) | 是   | 要关闭的KvStore数据库。      |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数,如果数据库关闭成功则返回true,否则返回false。   |
A
asfasdff 已提交
252 253 254 255 256


-   示例:

    ```
A
asfasdff 已提交
257 258 259 260 261 262 263 264 265 266 267
    let kvStore;
    let kvManager;
    const options = {
        createIfMissing : true,
        encrypt : false,
        backup : false,
        autoSync : true,
        kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
        schema : '',
        securityLevel : distributedData.SecurityLevel.S2,
    }
A
asfasdff 已提交
268 269 270 271
    try {
        kvManager.getKVStore('storeId', options, async function (err, store) {
            console.log('getKVStore success');
            kvStore = store;
A
asfasdff 已提交
272
            await kvManager.closeKVStore('appId', 'storeId', kvStore, function (err, data) {
A
asfasdff 已提交
273 274 275 276
                console.log('closeKVStore success');
            });
        });
    } catch (e) {
A
asfasdff 已提交
277
        console.log('closeKVStore e ' + e);
A
asfasdff 已提交
278
    }
279
    ```
A
asfasdff 已提交
280

A
asfasdff 已提交
281
### closeKVStore<sup>8+</sup> ###
A
asfasdff 已提交
282

283
closeKVStore(appId: string, storeId: string, kvStore: KVStore): Promise&lt;void&gt;
A
asfasdff 已提交
284 285 286

通过kvStore的值关闭指定的kvStore数据库,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
287
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
288

289
- 参数:
A
asfasdff 已提交
290

291 292 293 294 295
| 参数名  | 参数类型 | 必填  | 说明        |
| -----  | ------  | ---- | ----------------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。            |
| storeId | string | 是   | 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| kvStore | [KVStore](#kvstore)  | 是   | 要关闭的KvStore数据库。        |
A
asfasdff 已提交
296

297
- 返回值:
A
asfasdff 已提交
298

299 300 301
| 类型          | 说明            |
| ------------- | -------------- |
| Promise<void> | Promise实例,如果数据库关闭成功则返回true,否则返回false。 |
A
asfasdff 已提交
302 303 304 305

-   示例:

    ```
A
asfasdff 已提交
306 307 308 309 310 311 312 313 314 315 316
    let kvManager;
    let kvStore;
    const options = {
        createIfMissing : true,
        encrypt : false,
        backup : false,
        autoSync : true,
        kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
        schema : '',
        securityLevel : distributedData.SecurityLevel.S2,
    }
A
asfasdff 已提交
317
    try {
A
asfasdff 已提交
318 319 320 321 322 323 324 325
        kvManager.getKVStore('storeId', options).then(async (store) => {
            console.log('getKVStore success');
            kvStore = store;
            await kvManager.closeKVStore('appId', 'storeId', kvStore).then(() => {
                console.log('closeKVStore success');
            }).catch((err) => {
                console.log('closeKVStore err ' + JSON.stringify(err));
            });
A
asfasdff 已提交
326
        }).catch((err) => {
A
asfasdff 已提交
327
            console.log('CloseKVStore getKVStore err ' + JSON.stringify(err));
A
asfasdff 已提交
328 329
        });
    } catch (e) {
A
asfasdff 已提交
330
        console.log('closeKVStore e ' + e);
A
asfasdff 已提交
331
    }
332
    ```
A
asfasdff 已提交
333 334


A
asfasdff 已提交
335
### deleteKVStore<sup>8+</sup> ###
A
asfasdff 已提交
336

337
deleteKVStore(appId: string, storeId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
338 339 340

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

W
wufengshan 已提交
341
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
342

A
asfasdff 已提交
343 344
-   参数:

345 346 347 348 349 350
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。     |
| storeId | string | 是   | 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| callback | AsyncCallback&lt;void&gt;  | 是   | 回调函数,如果成功返回true,否则返回false。   |

A
asfasdff 已提交
351 352 353 354

-   示例:

    ```
A
asfasdff 已提交
355 356 357 358 359 360 361 362 363 364 365
    let kvManager;
    let kvStore;
    const options = {
        createIfMissing : true,
        encrypt : false,
        backup : false,
        autoSync : true,
        kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
        schema : '',
        securityLevel : distributedData.SecurityLevel.S2,
    }
A
asfasdff 已提交
366
    try {
A
asfasdff 已提交
367 368 369 370
        kvManager.getKVStore('store', options, async function (err, store) {
            console.log('getKVStore success');
            kvStore = store;
            await kvManager.deleteKVStore('appId', 'storeId', function (err, data) {
A
asfasdff 已提交
371
                console.log('deleteKVStore success');
A
asfasdff 已提交
372
            });
A
asfasdff 已提交
373 374
        });
    } catch (e) {
A
asfasdff 已提交
375
        console.log('DeleteKVStore e ' + e);
A
asfasdff 已提交
376
    }
377
    ```
A
asfasdff 已提交
378

A
asfasdff 已提交
379
### deleteKVStore<sup>8+</sup> ###
A
asfasdff 已提交
380

381
deleteKVStore(appId: string, storeId: string): Promise&lt;void&gt;
A
asfasdff 已提交
382 383 384

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

W
wufengshan 已提交
385
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
386

A
asfasdff 已提交
387
-   参数:
Z
zengyawen 已提交
388

389 390 391 392
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。     |
| storeId | string | 是   | 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
A
asfasdff 已提交
393 394 395 396


-   返回值:

397 398 399
| 类型          | 说明            |
| ------------- | -------------- |
| Promise&lt;void&gt; | Promise实例,如果成功返回true,否则返回false。 |
A
asfasdff 已提交
400 401 402 403

-   示例:

    ```
A
asfasdff 已提交
404 405 406 407 408 409 410 411 412 413 414
    let kvManager;
    let kvStore;
    const options = {
        createIfMissing : true,
        encrypt : false,
        backup : false,
        autoSync : true,
        kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
        schema : '',
        securityLevel : distributedData.SecurityLevel.S2,
    }
A
asfasdff 已提交
415
    try {
A
asfasdff 已提交
416 417 418 419 420 421 422 423
        kvManager.getKVStore('storId', options).then(async (store) => {
            console.log('getKVStore success');
            kvStore = store;
            await kvManager.deleteKVStore('appId', 'storeId').then(() => {
                console.log('deleteKVStore success');
            }).catch((err) => {
                console.log('deleteKVStore err ' + JSON.stringify(err));
            });
A
asfasdff 已提交
424
        }).catch((err) => {
A
asfasdff 已提交
425
            console.log('getKVStore err ' + JSON.stringify(err));
A
asfasdff 已提交
426 427
        });
    } catch (e) {
A
asfasdff 已提交
428
        console.log('deleteKVStore e ' + e);
A
asfasdff 已提交
429
    }
430
    ```
A
asfasdff 已提交
431 432


A
asfasdff 已提交
433
### getAllKVStoreId<sup>8+</sup> ###
A
asfasdff 已提交
434

435
getAllKVStoreId(appId: string, callback: AsyncCallback&lt;string[]&gt;): void
A
asfasdff 已提交
436 437 438

获取所有通过getKvStore方法创建的且没有调用deleteKvStore方法删除的KvStore数据库的storeId,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
439
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
440

A
asfasdff 已提交
441 442
-   参数:

443 444 445 446
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
| callback | AsyncCallback&lt;void&gt; | 是   |回调函数,返回所有创建的 KvStore 数据库的 storeId。 |
A
asfasdff 已提交
447 448 449 450

-   示例:

    ```
A
asfasdff 已提交
451
    let kvManager;
A
asfasdff 已提交
452 453
    try {
        kvManager.getAllKVStoreId('appId', function (err, data) {
A
asfasdff 已提交
454
            console.log('GetAllKVStoreId success');
A
asfasdff 已提交
455 456 457 458 459
            console.log('GetAllKVStoreId size = ' + data.length);
        });
    } catch (e) {
        console.log('GetAllKVStoreId e ' + e);
    }
460
    ```
A
asfasdff 已提交
461 462


A
asfasdff 已提交
463
### getAllKVStoreId<sup>8+</sup> ###
A
asfasdff 已提交
464

465
getAllKVStoreId(appId: string): Promise&lt;string[]&gt;
A
asfasdff 已提交
466 467 468

获取所有通过getKvStore方法创建的且没有调用deleteKvStore方法删除的KvStore数据库的storeId,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
469
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
470

A
asfasdff 已提交
471 472
-   参数:

473 474 475
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
A
asfasdff 已提交
476 477


478
-   返回值:
Z
zengyawen 已提交
479

480 481 482
| 类型          | 说明            |
| ------------- | -------------- |
| Promise&lt;string[]&gt;| Promise实例,返回所有创建的 KvStore 数据库的 storeId。 |
A
asfasdff 已提交
483 484 485 486

-   示例:

    ```
A
asfasdff 已提交
487
    let kvManager;
A
asfasdff 已提交
488
    try {
A
asfasdff 已提交
489 490 491 492
        console.log('GetAllKVStoreId');
        kvManager.getAllKVStoreId('apppId').then((data) => {
            console.log('getAllKVStoreId success');
            console.log('size = ' + data.length);
A
asfasdff 已提交
493
        }).catch((err) => {
A
asfasdff 已提交
494
            console.log('getAllKVStoreId err ' + JSON.stringify(err));
A
asfasdff 已提交
495
        });
A
asfasdff 已提交
496 497
    } catch(e) {
        console.log('getAllKVStoreId e ' + e);
A
asfasdff 已提交
498
    }
499
    ```
A
asfasdff 已提交
500 501


A
asfasdff 已提交
502
### on<sup>8+</sup> ###
A
asfasdff 已提交
503

504
on(event: 'distributedDataServiceDie', deathCallback: Callback&lt;void&gt;): void
A
asfasdff 已提交
505

A
asfasdff 已提交
506
订阅服务状态变更通知,并通过callback方式返回,此方法为同步方法。
A
asfasdff 已提交
507

W
wufengshan 已提交
508
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
509

A
asfasdff 已提交
510 511
-   参数:

512 513 514 515 516 517
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  | 'distributedDataServiceDie'  | 是    | 服务状态改变时触发的事件名。     |
| deathCallback  | Callback&lt;void&gt;  | 是    | 回调函数,在设备状态改变时获取通知。    |


A
asfasdff 已提交
518 519 520 521

-   示例

    ```
A
asfasdff 已提交
522
    let kvManager;
A
asfasdff 已提交
523
    try {
A
asfasdff 已提交
524 525 526 527 528 529
        
        console.log('KVManagerOn');
        const deathCallback = function () {
            console.log('death callback call');
        }
        kvManager.on('distributedDataServiceDie', deathCallback);
A
asfasdff 已提交
530 531 532
    } catch (e) {
        console.log("An unexpected error occurred. Error:" + e);
    }
533
    ```
A
asfasdff 已提交
534 535


A
asfasdff 已提交
536
### off<sup>8+</sup> ###
A
asfasdff 已提交
537

538
off(event: 'distributedDataServiceDie', deathCallback?: Callback&lt;void&gt;): void
A
asfasdff 已提交
539

A
asfasdff 已提交
540
取消订阅服务状态变更通知,并通过callback方式返回,此方法为同步方法。
A
asfasdff 已提交
541

W
wufengshan 已提交
542
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
543

A
asfasdff 已提交
544 545
-   参数:

546 547 548 549
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  | 'distributedDataServiceDie'  | 是    | 服务状态改变时触发的事件名。     |
| deathCallback  | Callback&lt;void&gt;  | 否    | 回调函数,取消设备状态改变时获取通知。    |
Z
zengyawen 已提交
550

A
asfasdff 已提交
551 552 553 554

-   示例

    ```
A
asfasdff 已提交
555
    let kvManager;
A
asfasdff 已提交
556
    try {
A
asfasdff 已提交
557 558 559 560 561
        console.log('KVManagerOff');
        const deathCallback = function () {
            console.log('death callback call');
        }
        kvManager.off('distributedDataServiceDie', deathCallback);
A
asfasdff 已提交
562 563 564
    } catch (e) {
        console.log("An unexpected error occurred. Error:" + e);
    }
565 566
    
    ```
A
asfasdff 已提交
567

568
## Options
Z
zengyawen 已提交
569 570 571

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

572 573
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

574 575 576 577 578 579 580 581
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| createIfMissing  | boolean | 否 | 当数据库文件不存在时是否创建数据库,默认创建。     |
| encrypt  | boolean | 否 |设置数据库文件是否加密,默认不加密。     |
| backup  | boolean | 否 |设置数据库文件是否备份,默认备份。     |
| autoSync  | boolean | 否 |设置数据库文件是否自动同步,默认不自动同步。     |
| kvStoreType | [KVStoreType](#kvstoretype) | 否 |设置要创建的数据库类型,默认为多设备协同数据库。 |
| securityLevel | [SecurityLevel](#securitylevel) | 否 |设置数据库安全级别,默认不设置安全级别。  |
582
| schema | [schema](#Schema<sup>8+</sup>) | 否 | 设置定义存储在数据库中的值。 |
583 584 585


## KVStoreType
Z
zengyawen 已提交
586 587 588

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

589 590
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

591 592 593 594 595 596 597 598 599
| 名称  | 默认值 | 说明                    |
| ---   | ----  | ----------------------- |
| DEVICE_COLLABORATION  | 0 | 表示多设备协同数据库。   |
| SINGLE_VERSION  | 1 | 表示单版本数据库。  |
| MULTI_VERSION   | 2 | 表示多版本数据库。此类型当前不允许使用。  |



## SecurityLevel
Z
zengyawen 已提交
600 601 602

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

603 604
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

605 606 607 608 609 610 611 612 613 614 615
| 名称  | 默认值 | 说明                    |
| ---   | ----  | ----------------------- |
| NO_LEVEL  | 0 | 表示数据库不设置安全级别。   |
| S0  | 1 | 表示数据库的安全级别为公共级别安全。  |
| S1  | 2 | 表示数据库的安全级别为低级别安全,当数据泄露时会产生较低影响。  |
| S2  | 3 | 表示数据库的安全级别为中级别安全,当数据泄露时会产生较大影响。  |
| S3  | 5 | 表示数据库的安全级别为高级别安全,当数据泄露时会产生重大影响。  |
| S4  | 6 | 表示数据库的安全级别为关键级别安全,当数据泄露时会产生严重影响。  |


## Constants
Z
zengyawen 已提交
616 617 618

KVStore常量。

619 620
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

621 622 623 624 625 626 627 628
| 名称  | 默认值 | 说明                    |
| ---   | ----  | ----------------------- |
| 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 | 最大批处理操作大小。  |
A
asfasdff 已提交
629

A
asfasdff 已提交
630
## Schema<sup>8+</sup> ##
A
asfasdff 已提交
631

A
asfasdff 已提交
632
表示数据库模式,可以在创建或打开数据库时创建 Schema 对象并将它们放入 Options 中。
A
asfasdff 已提交
633

634
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
A
asfasdff 已提交
635

W
wufengshan 已提交
636
| 名称  | 类型 | 说明                    |
637
| ---   | ----  | ----------------------- |
W
wufengshan 已提交
638 639 640 641
| root<sup>8+</sup>  | [FieldNode](#FieldNode) | 表示json根对象  |
| indexes<sup>8+</sup>  | Array<string> | 表示json类型的字符串数组。  |
| mode<sup>8+</sup>  | number | 表示Schema的模式。  |
| skip<sup>8+</sup>  | number |  Schema的跳跃大小。  |
642 643 644 645 646 647 648

### constructor<sup>8+</sup> ###

constructor()

用于创建Schema实例的构造函数。

W
wufengshan 已提交
649
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
650

651
## FieldNode<sup>8+</sup> ##
A
asfasdff 已提交
652 653 654

表示 Schema 实例的节点,提供定义存储在数据库中的值的方法。

655 656
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。

W
wufengshan 已提交
657
| 名称  | 类型 | 说明                    |
658
| ---   | ----  | ----------------------- |
W
wufengshan 已提交
659 660 661
| nullable<sup>8+</sup>  | boolean | 表示数据库字段是否可以为空。   |
| default<sup>8+</sup>  | string | 表示fieldnode的默认值。 |
| type<sup>8+</sup>  | number | 表示值。 |
662 663 664 665 666 667 668

### constructor<sup>8+</sup> ###

constructor(name: string)

用于创建带有string字段FieldNode实例的构造函数。

W
wufengshan 已提交
669
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
670 671 672 673 674

-   参数:

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
W
wufengshan 已提交
675
| name  | string  | 是    | FieldNode的值。  
676

A
asfasdff 已提交
677
### appendChild<sup>8+</sup> ###
A
asfasdff 已提交
678

679
appendChild(child: FieldNode): boolean
A
asfasdff 已提交
680 681 682

向这个 FieldNode 添加一个子节点。

W
wufengshan 已提交
683
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
684

A
asfasdff 已提交
685 686
-   参数:

687 688 689
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| child  | [FieldNode](#FieldNode)  | 是    | 要附加的域节点。   |
Z
zengyawen 已提交
690

A
asfasdff 已提交
691 692 693

-   返回值:

694 695 696
| 类型          | 说明            |
| ------------- | -------------- |
| boolean |如果子节点成功添加到这个FieldNode,则返回 true;否则返回 false。 |
A
asfasdff 已提交
697 698 699 700

-   示例

    ```
A
asfasdff 已提交
701
    import ddm from '@ohos.data.distributedData';
A
asfasdff 已提交
702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717
    try {
        let node = new ddm.FieldNode("root");
        let child1 = new ddm.FieldNode("child1");
        let child2 = new ddm.FieldNode("child2");
        let child3 = new ddm.FieldNode("child3");
        node.appendChild(child1);
        node.appendChild(child2);
        node.appendChild(child3);
        console.log("appendNode " + node.toJson());
        child1 = null;
        child2 = null;
        child3 = null;
        node = null;
    } catch (e) {
        console.log("AppendChild " + e);
    }
718
    ```
A
asfasdff 已提交
719 720 721 722




723
## KvStoreResultSet<sup>8+</sup> ##
A
asfasdff 已提交
724

A
asfasdff 已提交
725
提供获取KvStore数据库结果集的方法,提供查询和移动数据读取位置的方法,在调用KvStoreResultSet的方法前,需要先通过KvStore 构建一个KvStore 实例。
A
asfasdff 已提交
726

727

A
asfasdff 已提交
728
### getCount<sup>8+</sup> ###
A
asfasdff 已提交
729

730
getCount(): number
A
asfasdff 已提交
731 732 733

获取结果集中的行数。

W
wufengshan 已提交
734
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
735

A
asfasdff 已提交
736 737
-   返回值:

738 739 740
| 类型   | 说明               |
| ------ | --------------    |
| number |返回行数。          |
A
asfasdff 已提交
741 742 743 744

-   示例

    ```
A
asfasdff 已提交
745
    let kvStore;
A
asfasdff 已提交
746
    try {
A
asfasdff 已提交
747 748 749 750 751 752 753
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
754 755
        const count = resultSet.getCount();
        console.log("GetCount " + count);
A
asfasdff 已提交
756
    } catch (e) {
A
asfasdff 已提交
757
        console.log("GetCount fail " + e);
A
asfasdff 已提交
758
    }
759
    ```
A
asfasdff 已提交
760 761


A
asfasdff 已提交
762
### getPosition<sup>8+</sup> ###
A
asfasdff 已提交
763

764
getPosition(): number
A
asfasdff 已提交
765 766 767

获取结果集中当前的读取位置。

W
wufengshan 已提交
768
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
769

A
asfasdff 已提交
770 771
-   返回值:

772 773 774
| 类型   | 说明               |
| ------ | --------------    |
| number |返回当前读取位置。   |
A
asfasdff 已提交
775 776 777 778

-   示例

    ```
A
asfasdff 已提交
779
    let kvStore;
A
asfasdff 已提交
780
    try {
A
asfasdff 已提交
781 782 783 784 785 786 787
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
788 789 790
        const positon = resultSet.getPosition();
        console.log("getPosition " + positon);
    } catch (e) {
A
asfasdff 已提交
791
        console.log("GetPosition fail " + e);
A
asfasdff 已提交
792 793 794 795
    }
    ```


A
asfasdff 已提交
796
### moveToFirst<sup>8+</sup> ###
A
asfasdff 已提交
797

798
moveToFirst(): boolean
A
asfasdff 已提交
799 800 801

将读取位置移动到第一行。

W
wufengshan 已提交
802
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
803

A
asfasdff 已提交
804 805
-   返回值:

806 807 808
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
809 810 811 812

-   示例

    ```
A
asfasdff 已提交
813
    let kvStore;
A
asfasdff 已提交
814
    try {
A
asfasdff 已提交
815 816 817 818 819 820 821
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
822 823 824 825 826 827 828 829
        const moved = resultSet.moveToFirst();
        console.log("moveToFirst " + moved);
    } catch (e) {
        console.log("MoveToFirst fail " + e);
    }
    ```


A
asfasdff 已提交
830
### moveToLast<sup>8+</sup> ###
A
asfasdff 已提交
831

832
moveToLast(): boolean
A
asfasdff 已提交
833 834 835

将读取位置移动到最后一行。

W
wufengshan 已提交
836
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
837

A
asfasdff 已提交
838 839
-   返回值:

840 841 842
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
843 844 845 846

-   示例

    ```
A
asfasdff 已提交
847
    let kvStore;
A
asfasdff 已提交
848
    try {
A
asfasdff 已提交
849 850 851 852 853 854 855
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
856 857 858 859 860 861 862 863
        const moved = resultSet.moveToLast();
        console.log("moveToLast " + moved);
    } catch (e) {
        console.log("moveToLast fail " + e);
    }
    ```


A
asfasdff 已提交
864
### moveToNext<sup>8+</sup> ###
A
asfasdff 已提交
865

866
moveToNext(): boolean
A
asfasdff 已提交
867 868 869

将读取位置移动到下一行。

W
wufengshan 已提交
870
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
871

A
asfasdff 已提交
872 873
-   返回值:

874 875 876
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
877 878 879 880

-   示例

    ```
A
asfasdff 已提交
881
    let kvStore;
A
asfasdff 已提交
882
    try {
A
asfasdff 已提交
883 884 885 886 887 888 889
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
890 891 892 893 894 895 896 897
        const moved = resultSet.moveToNext();
        console.log("moveToNext " + moved);
    } catch (e) {
        console.log("moveToNext fail " + e);
    }
    ```


A
asfasdff 已提交
898
### moveToPrevious<sup>8+</sup> ###
A
asfasdff 已提交
899

900
moveToPrevious(): boolean
A
asfasdff 已提交
901 902 903

将读取位置移动到上一行。

W
wufengshan 已提交
904
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
905

A
asfasdff 已提交
906 907
-   返回值:

908 909 910
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
911 912 913 914

-   示例

    ```
A
asfasdff 已提交
915
    let kvStore;
A
asfasdff 已提交
916
    try {
A
asfasdff 已提交
917 918 919 920 921 922 923
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
924 925 926 927 928 929 930 931
        const moved = resultSet.moveToPrevious();
        console.log("moveToPrevious " + moved);
    } catch (e) {
        console.log("moveToPrevious fail " + e);
    }
    ```


A
asfasdff 已提交
932
### move<sup>8+</sup> ###
A
asfasdff 已提交
933

934
move(offset: number): boolean
A
asfasdff 已提交
935 936 937

将读取位置移动到当前位置的相对偏移量。

W
wufengshan 已提交
938
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
939

A
asfasdff 已提交
940 941
-   参数:

942 943 944
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| offset  | number  | 是    | 表示与当前位置的相对偏移量,负偏移表示向后移动,正偏移表示向前移动。   |
A
asfasdff 已提交
945 946 947

-   返回值:

948 949 950
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
951 952 953 954

-   示例

    ```
A
asfasdff 已提交
955
    let kvStore;
A
asfasdff 已提交
956
    try {
A
asfasdff 已提交
957 958 959 960 961 962 963
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
964 965 966 967 968 969 970 971
        const moved = resultSet.move();
        console.log("move " + moved);
    } catch (e) {
        console.log("move fail " + e);
    }
    ```


A
asfasdff 已提交
972
### moveToPosition<sup>8+</sup> ###
A
asfasdff 已提交
973

974
moveToPosition(position: number): boolean
A
asfasdff 已提交
975 976 977

将读取位置从 0 移动到绝对位置。

W
wufengshan 已提交
978
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
979

A
asfasdff 已提交
980 981
-   参数:

982 983 984
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| position  | number  | 是    |表示绝对位置。          |
A
asfasdff 已提交
985 986 987

-   返回值:

988 989 990
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
991 992 993 994

-   示例

    ```
A
asfasdff 已提交
995
    let kvStore;
A
asfasdff 已提交
996
    try {
A
asfasdff 已提交
997 998 999 1000 1001 1002 1003
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
1004 1005 1006 1007 1008 1009 1010 1011
        const moved = resultSet.moveToPosition();
        console.log("moveToPosition " + moved);
    } catch (e) {
        console.log("moveToPosition fail " + e);
    }
    ```


A
asfasdff 已提交
1012
### isFirst<sup>8+</sup> ###
A
asfasdff 已提交
1013

1014
isFirst(): boolean
A
asfasdff 已提交
1015 1016 1017

检查读取位置是否为第一行。

W
wufengshan 已提交
1018
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1019

A
asfasdff 已提交
1020 1021
-   返回值:

1022 1023 1024
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果读取位置是第一行,则返回 true;否则返回 false。   |
A
asfasdff 已提交
1025 1026 1027 1028

-   示例

    ```
A
asfasdff 已提交
1029
    let kvStore;
A
asfasdff 已提交
1030
    try {
A
asfasdff 已提交
1031 1032 1033 1034 1035 1036 1037
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
1038 1039 1040 1041 1042 1043 1044 1045
        const moved = resultSet.isFirst();
        console.log("isFirst " + moved);
    } catch (e) {
        console.log("isFirst fail " + e);
    }
    ```


A
asfasdff 已提交
1046
### isLast<sup>8+</sup> ###
A
asfasdff 已提交
1047

1048
isLast(): boolean
A
asfasdff 已提交
1049 1050 1051

检查读取位置是否为最后一行。

W
wufengshan 已提交
1052
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1053

A
asfasdff 已提交
1054 1055
-   返回值:

1056 1057 1058
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果读取位置是最后一行,则返回 true;否则返回 false。   |
A
asfasdff 已提交
1059 1060 1061 1062

-   示例

    ```
A
asfasdff 已提交
1063
    let kvStore;
A
asfasdff 已提交
1064
    try {
A
asfasdff 已提交
1065 1066 1067 1068 1069 1070 1071
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
1072 1073 1074 1075 1076 1077 1078 1079
        const moved = resultSet.isLast();
        console.log("isLast " + moved);
    } catch (e) {
        console.log("isLast fail " + e);
    }
    ```


A
asfasdff 已提交
1080
### isBeforeFirst<sup>8+</sup> ###
A
asfasdff 已提交
1081

1082
isBeforeFirst(): boolean
A
asfasdff 已提交
1083 1084 1085

检查读取位置是否在第一行之前。

W
wufengshan 已提交
1086
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1087

A
asfasdff 已提交
1088 1089
-   返回值:

1090 1091 1092
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果读取位置在第一行之前,则返回 true;否则返回 false。  |
A
asfasdff 已提交
1093 1094 1095 1096

-   示例

    ```
A
asfasdff 已提交
1097
    let kvStore;
A
asfasdff 已提交
1098
    try {
A
asfasdff 已提交
1099 1100 1101 1102 1103 1104 1105
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
1106 1107 1108 1109 1110 1111 1112 1113
        const moved = resultSet.isBeforeFirst();
        console.log("isBeforeFirst " + moved);
    } catch (e) {
        console.log("isBeforeFirst fail " + e);
    }
    ```


A
asfasdff 已提交
1114
### isAfterLast<sup>8+</sup> ###
A
asfasdff 已提交
1115

1116
isAfterLast(): boolean
A
asfasdff 已提交
1117 1118 1119

检查读取位置是否在最后一行之后。

W
wufengshan 已提交
1120
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1121

A
asfasdff 已提交
1122 1123
-   返回值:

1124 1125 1126
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果读取位置在最后一行之后,则返回 true;否则返回 false。  |
A
asfasdff 已提交
1127 1128 1129 1130

-   示例

    ```
A
asfasdff 已提交
1131
    let kvStore;
A
asfasdff 已提交
1132
    try {
A
asfasdff 已提交
1133 1134 1135 1136 1137 1138 1139
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
1140 1141 1142 1143 1144 1145 1146 1147
        const moved = resultSet.isAfterLast();
        console.log("isAfterLast " + moved);
    } catch (e) {
        console.log("isAfterLast fail " + e);
    }
    ```


A
asfasdff 已提交
1148
### getEntry<sup>8+</sup> ###
A
asfasdff 已提交
1149

1150
getEntry(): Entry
A
asfasdff 已提交
1151 1152 1153

获取键值对

W
wufengshan 已提交
1154
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1155

A
asfasdff 已提交
1156 1157
-   返回值:

1158 1159 1160
| 类型    | 说明       |
| ------  | -------   |
| Entry   |返回键值对。|
A
asfasdff 已提交
1161 1162 1163 1164

-   示例

    ```
A
asfasdff 已提交
1165
    let kvStore;
A
asfasdff 已提交
1166
    try {
A
asfasdff 已提交
1167 1168 1169 1170 1171 1172 1173
	    let resultSet;
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + err);
        });
A
asfasdff 已提交
1174 1175
        const moved = resultSet.moveToNext();
        const entry  = resultSet.getEntry();
A
asfasdff 已提交
1176
        console.log("getEntry " + JSON.stringify(entry));
A
asfasdff 已提交
1177 1178 1179 1180 1181 1182
    } catch (e) {
        console.log("getEntry fail " + e);
    }
    ```


1183
## Query<sup>8+</sup> ##
A
asfasdff 已提交
1184 1185 1186

使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。

W
wufengshan 已提交
1187
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1188

1189 1190 1191 1192 1193 1194
### constructor<sup>8+</sup> ###

constructor() 

用于创建Schema实例的构造函数

W
wufengshan 已提交
1195
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1196

1197

A
asfasdff 已提交
1198
### reset<sup>8+</sup> ###
A
asfasdff 已提交
1199

1200
reset(): Query
A
asfasdff 已提交
1201 1202 1203

公共查询重置。

W
wufengshan 已提交
1204
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1205 1206


A
asfasdff 已提交
1207 1208
-   返回值:

1209 1210
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1211
| [Query](#query8) |返回重置的 Query 对象。|
A
asfasdff 已提交
1212 1213 1214 1215 1216

-   示例

    ```
    try {
A
asfasdff 已提交
1217
        let query = new distributedData.Query();
A
asfasdff 已提交
1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228
        query.equalTo("key", "value");
        console.log("query is " + query.getSqlLike());
        query.reset();
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("simply calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1229
### equalTo<sup>8+</sup> ###
A
asfasdff 已提交
1230

A
asfasdff 已提交
1231
equalTo(field: string, value: number|string|boolean): Query;
A
asfasdff 已提交
1232 1233 1234

构造一个Query对象来查询具有指定字段的条目,其值等于指定的值。

W
wufengshan 已提交
1235
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1236

A
asfasdff 已提交
1237 1238
-   参数:

1239 1240 1241 1242
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| value  | number/string/boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1243 1244 1245

-   返回值:

1246 1247
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1248
| [Query](#query8) |返回重置的 Query 对象。|
A
asfasdff 已提交
1249 1250 1251 1252 1253

-   示例

    ```
    try {
A
asfasdff 已提交
1254
        let query = new distributedData.Query();
A
asfasdff 已提交
1255 1256 1257 1258 1259 1260 1261 1262 1263
        query.equalTo("field", "value");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1264
### notEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1265

1266
notEqualTo(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1267 1268 1269

构造一个Query对象以查询具有指定字段且值不等于指定值的条目。

W
wufengshan 已提交
1270
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1271

A
asfasdff 已提交
1272 1273
-   参数:

1274 1275 1276 1277
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| value  | number/string/boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1278 1279 1280

-   返回值:

1281 1282
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1283
| [Query](#query8) |返回重置的 Query 对象。|
A
asfasdff 已提交
1284 1285 1286 1287 1288

-   示例

    ```
    try {
A
asfasdff 已提交
1289
        let query = new distributedData.Query();
A
asfasdff 已提交
1290 1291 1292 1293 1294 1295 1296 1297 1298
        query.notEqualTo("field", "value");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1299
### greaterThan<sup>8+</sup> ###
A
asfasdff 已提交
1300

1301
greaterThan(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1302 1303 1304

构造一个Query对象以查询具有大于指定值的指定字段的条目。

W
wufengshan 已提交
1305
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1306

A
asfasdff 已提交
1307 1308
-   参数:

1309 1310 1311 1312
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| value  | number/string/boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1313 1314 1315

-   返回值:

1316 1317
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1318
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1319 1320 1321 1322 1323

-   示例

    ```
    try {
A
asfasdff 已提交
1324
        let query = new distributedData.Query();
A
asfasdff 已提交
1325 1326 1327 1328 1329 1330 1331 1332 1333
        query.greaterThan("field", "value");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1334
### lessThan<sup>8+</sup> ###
A
asfasdff 已提交
1335

1336
lessThan(field: string, value: number|string): Query
A
asfasdff 已提交
1337 1338 1339

构造一个Query对象以查询具有小于指定值的指定字段的条目。

W
wufengshan 已提交
1340
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1341

A
asfasdff 已提交
1342 1343
-   参数:

1344 1345 1346 1347
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| value  | number/string/boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1348 1349 1350

-   返回值:

1351 1352
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1353
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1354 1355 1356 1357 1358

-   示例

    ```
    try {
A
asfasdff 已提交
1359
        let query = new distributedData.Query();
A
asfasdff 已提交
1360 1361 1362 1363 1364 1365 1366 1367 1368
        query.lessThan("field", "value");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1369
### greaterThanOrEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1370

1371
greaterThanOrEqualTo(field: string, value: number|string): Query
A
asfasdff 已提交
1372 1373 1374

构造一个Query对象以查询具有指定字段且值大于或等于指定值的条目。

W
wufengshan 已提交
1375
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1376

A
asfasdff 已提交
1377 1378
-   参数:

1379 1380 1381 1382
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| value  | number/string/boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1383 1384 1385

-   返回值:

1386 1387
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1388
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1389 1390 1391 1392 1393

-   示例

    ```
    try {
A
asfasdff 已提交
1394
        let query = new distributedData.Query();
A
asfasdff 已提交
1395 1396 1397 1398 1399 1400 1401 1402 1403
        query.greaterThanOrEqualTo("field", "value");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1404
### lessThanOrEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1405

1406
lessThanOrEqualTo(field: string, value: number|string): Query
A
asfasdff 已提交
1407 1408 1409

构造一个Query对象以查询具有指定字段且值小于或等于指定值的条目。

W
wufengshan 已提交
1410
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1411

A
asfasdff 已提交
1412 1413
-   参数:

1414 1415 1416 1417
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| value  | number/string/boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1418 1419 1420

-   返回值:

1421 1422
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1423
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1424 1425 1426 1427 1428

-   示例

    ```
    try {
A
asfasdff 已提交
1429
        let query = new distributedData.Query();
A
asfasdff 已提交
1430 1431 1432 1433 1434 1435 1436 1437 1438
        query.lessThanOrEqualTo("field", "value");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1439
### isNull<sup>8+</sup> ###
A
asfasdff 已提交
1440

1441
isNull(field: string): Query
A
asfasdff 已提交
1442 1443 1444

构造一个Query对象以查询具有值为null的指定字段的条目。

1445

W
wufengshan 已提交
1446
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1447

A
asfasdff 已提交
1448 1449
-   参数:

1450 1451 1452
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
A
asfasdff 已提交
1453 1454 1455

-   返回值:

1456 1457
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1458
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1459 1460 1461 1462 1463

-   示例

    ```
    try {
A
asfasdff 已提交
1464
        let query = new distributedData.Query();
A
asfasdff 已提交
1465 1466 1467 1468 1469 1470 1471 1472 1473
        query.isNull("field");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1474
### inNumber<sup>8+</sup> ###
A
asfasdff 已提交
1475

1476
inNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1477 1478 1479

构造一个Query对象以查询具有指定字段的条目,其值在指定的值列表中。

1480

W
wufengshan 已提交
1481
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1482

A
asfasdff 已提交
1483 1484
-   参数:

1485 1486 1487 1488
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | number[]  | 是    | 表示指定的值列表。|
A
asfasdff 已提交
1489 1490 1491

-   返回值:

1492 1493
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1494
| [Query](#query8) |返回查询对象。|
1495

A
asfasdff 已提交
1496 1497 1498 1499 1500

-   示例

    ```
    try {
A
asfasdff 已提交
1501 1502
        let query = new distributedData.Query();
        query.inNumber("field", [0, 1]);
A
asfasdff 已提交
1503 1504 1505 1506 1507 1508 1509 1510
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1511
### inString<sup>8+</sup> ###
A
asfasdff 已提交
1512

1513
inString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1514 1515 1516

构造一个Query对象以查询具有指定字段的条目,其值在指定的字符串值列表中。

W
wufengshan 已提交
1517
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1518

A
asfasdff 已提交
1519 1520
-   参数:

1521 1522 1523 1524
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | string[]  | 是    | 表示指定的字符串值列表。|
A
asfasdff 已提交
1525 1526 1527

-   返回值:

1528 1529
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1530
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1531 1532 1533 1534 1535

-   示例

    ```
    try {
A
asfasdff 已提交
1536 1537
        let query = new distributedData.Query();
        query.inString("field", ['test1', 'test2']);
A
asfasdff 已提交
1538 1539 1540 1541 1542 1543 1544 1545
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1546
### notInNumber<sup>8+</sup> ###
A
asfasdff 已提交
1547

1548
notInNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1549 1550 1551

构造一个Query对象以查询具有指定字段的条目,该字段的值不在指定的值列表中。

W
wufengshan 已提交
1552
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1553

A
asfasdff 已提交
1554 1555
-   参数:

1556 1557 1558 1559
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | number[]  | 是    | 表示指定的值列表。|
A
asfasdff 已提交
1560 1561 1562

-   返回值:

1563 1564
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1565
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1566 1567 1568 1569 1570

-   示例

    ```
    try {
A
asfasdff 已提交
1571 1572
        let query = new distributedData.Query();
        query.notInNumber("field", [0, 1]);
A
asfasdff 已提交
1573 1574 1575 1576 1577 1578 1579 1580
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1581
### notInString<sup>8+</sup> ###
A
asfasdff 已提交
1582

1583
notInString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1584 1585 1586

构造一个Query对象以查询具有指定字段且值不在指定字符串值列表中的条目。

W
wufengshan 已提交
1587
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1588

A
asfasdff 已提交
1589 1590
-   参数:

1591 1592 1593 1594
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | string[]  | 是    | 表示指定的字符串值列表。|
A
asfasdff 已提交
1595 1596 1597

-   返回值:

1598 1599
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1600
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1601 1602 1603 1604 1605

-   示例

    ```
    try {
A
asfasdff 已提交
1606 1607
        let query = new distributedData.Query();
        query.notInString("field", ['test1', 'test2']);
A
asfasdff 已提交
1608 1609 1610 1611 1612 1613 1614 1615
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1616
### like<sup>8+</sup> ###
A
asfasdff 已提交
1617

1618
like(field: string, value: string): Query
A
asfasdff 已提交
1619 1620 1621

构造一个Query对象以查询具有与指定字符串值相似的指定字段的条目。

W
wufengshan 已提交
1622
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1623

A
asfasdff 已提交
1624 1625
-   参数:

1626 1627 1628 1629
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | string  | 是    | 表示指定的字符串值。|
A
asfasdff 已提交
1630 1631 1632

-   返回值:

1633 1634
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1635
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1636 1637 1638 1639 1640

-   示例

    ```
    try {
A
asfasdff 已提交
1641
        let query = new distributedData.Query();
A
asfasdff 已提交
1642 1643 1644 1645 1646 1647 1648 1649 1650
        query.like("field", "value");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1651
### unlike<sup>8+</sup> ###
A
asfasdff 已提交
1652

1653
unlike(field: string, value: string): Query
A
asfasdff 已提交
1654 1655 1656

构造一个Query对象以查询具有与指定字符串值不相似的指定字段的条目。

W
wufengshan 已提交
1657
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1658

A
asfasdff 已提交
1659 1660
-   参数:

1661 1662 1663 1664
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | string  | 是    | 表示指定的字符串值。|
A
asfasdff 已提交
1665 1666 1667

-   返回值:

1668 1669
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1670
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1671 1672 1673 1674 1675

-   示例

    ```
    try {
A
asfasdff 已提交
1676
        let query = new distributedData.Query();
A
asfasdff 已提交
1677 1678 1679 1680 1681 1682 1683 1684 1685
        query.unlike("field", "value");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1686
### and<sup>8+</sup> ###
A
asfasdff 已提交
1687

1688
and(): Query
A
asfasdff 已提交
1689 1690 1691

构造一个带有与条件的查询对象。

W
wufengshan 已提交
1692
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1693

A
asfasdff 已提交
1694 1695
-   返回值:

1696 1697
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1698
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1699 1700 1701 1702 1703

-   示例

    ```
    try {
A
asfasdff 已提交
1704
        let query = new distributedData.Query();
A
asfasdff 已提交
1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715
        query.notEqualTo("field", "value1");
        query.and();
        query.notEqualTo("field", "value2");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1716
### or<sup>8+</sup> ###
A
asfasdff 已提交
1717

1718
or(): Query
A
asfasdff 已提交
1719 1720 1721

构造一个带有或条件的Query对象。

W
wufengshan 已提交
1722
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1723

A
asfasdff 已提交
1724 1725
-   返回值:

1726 1727
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1728
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1729 1730 1731 1732 1733

-   示例

    ```
    try {
A
asfasdff 已提交
1734
        let query = new distributedData.Query();
A
asfasdff 已提交
1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745
        query.notEqualTo("field", "value1");
        query.or();
        query.notEqualTo("field", "value2");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1746
### orderByAsc<sup>8+</sup> ###
A
asfasdff 已提交
1747

1748
orderByAsc(field: string): Query
A
asfasdff 已提交
1749 1750 1751

构造一个Query对象,将查询结果按升序排序。

W
wufengshan 已提交
1752
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1753

A
asfasdff 已提交
1754 1755
-   参数:

1756 1757 1758
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
A
asfasdff 已提交
1759 1760 1761

-   返回值:

1762 1763
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1764
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1765 1766 1767 1768 1769

-   示例

    ```
    try {
A
asfasdff 已提交
1770
        let query = new distributedData.Query();
A
asfasdff 已提交
1771 1772 1773 1774 1775 1776 1777 1778 1779 1780
        query.notEqualTo("field", "value");
        query.orderByAsc("field");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1781
### orderByDesc<sup>8+</sup> ###
A
asfasdff 已提交
1782

1783
orderByDesc(field: string): Query
A
asfasdff 已提交
1784 1785 1786

构造一个Query对象,将查询结果按降序排序。

W
wufengshan 已提交
1787
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1788

A
asfasdff 已提交
1789 1790
-   参数:

1791 1792 1793
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
A
asfasdff 已提交
1794 1795 1796

-   返回值:

1797 1798
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1799
| [Query](#query8) |返回查询对象。|
1800

A
asfasdff 已提交
1801 1802 1803 1804 1805

-   示例

    ```
    try {
A
asfasdff 已提交
1806
        let query = new distributedData.Query();
A
asfasdff 已提交
1807 1808 1809 1810 1811 1812 1813 1814 1815 1816
        query.notEqualTo("field", "value");
        query.orderByDesc("field");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1817
### limit<sup>8+</sup> ###
A
asfasdff 已提交
1818

1819
limit(total: number, offset: number): Query
A
asfasdff 已提交
1820 1821 1822

构造一个Query对象来指定结果的数量和开始位置。

W
wufengshan 已提交
1823
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1824

A
asfasdff 已提交
1825 1826
-   参数:

1827 1828 1829 1830
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| total  | number  | 是    |表示指定的结果数。  |
| offset | number  | 是    |表示起始位置。  |
A
asfasdff 已提交
1831 1832 1833

-   返回值:

1834 1835
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1836
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1837 1838 1839 1840 1841

-   示例

    ```
    try {
A
asfasdff 已提交
1842
        let query = new distributedData.Query();
A
asfasdff 已提交
1843 1844 1845 1846 1847 1848 1849 1850 1851 1852
        query.notEqualTo("field", "value");
        query.limit("total", "offset");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1853
### isNotNull<sup>8+</sup> ###
A
asfasdff 已提交
1854

1855
isNotNull(field: string): Query
A
asfasdff 已提交
1856 1857 1858

使用不为空的指定字段创建查询条件。

W
wufengshan 已提交
1859
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1860

A
asfasdff 已提交
1861 1862
-   参数:

1863 1864 1865
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段。      |
A
asfasdff 已提交
1866 1867 1868

-   返回值:

1869 1870
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1871
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1872 1873 1874 1875 1876

-   示例

    ```
    try {
A
asfasdff 已提交
1877
        let query = new distributedData.Query();
A
asfasdff 已提交
1878 1879 1880 1881 1882 1883 1884 1885 1886
        query.isNotNull("field");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1887
### beginGroup<sup>8+</sup> ###
A
asfasdff 已提交
1888

1889
beginGroup(): Query
A
asfasdff 已提交
1890 1891 1892

创建一个带有左括号的查询条件组。

W
wufengshan 已提交
1893
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1894

A
asfasdff 已提交
1895 1896
-   返回值:

1897 1898
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1899
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1900 1901 1902 1903 1904

-   示例

    ```
    try {
A
asfasdff 已提交
1905
        let query = new distributedData.Query();
A
asfasdff 已提交
1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916
        query.beginGroup();
        query.isNotNull("field");
        query.endGroup();
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1917
### endGroup<sup>8+</sup> ###
A
asfasdff 已提交
1918

1919
endGroup(): Query
A
asfasdff 已提交
1920 1921 1922

创建一个带有右括号的查询条件组。

W
wufengshan 已提交
1923
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1924

A
asfasdff 已提交
1925 1926
-   返回值:

1927 1928
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1929
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1930 1931 1932 1933 1934

-   示例

    ```
    try {
A
asfasdff 已提交
1935
        let query = new distributedData.Query();
A
asfasdff 已提交
1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946
        query.beginGroup();
        query.isNotNull("field");
        query.endGroup();
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1947
### prefixKey<sup>8+</sup> ###
A
asfasdff 已提交
1948

1949
prefixKey(prefix: string): Query
A
asfasdff 已提交
1950 1951 1952

创建具有指定键前缀的查询条件。

W
wufengshan 已提交
1953
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1954

A
asfasdff 已提交
1955 1956
-   参数:

1957 1958 1959
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| prefix | string  | 是    |表示指定的键前缀。     |
A
asfasdff 已提交
1960 1961 1962

-   返回值:

1963 1964
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1965
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1966 1967 1968 1969 1970

-   示例

    ```
    try {
A
asfasdff 已提交
1971
        let query = new distributedData.Query();
A
asfasdff 已提交
1972 1973 1974 1975 1976 1977 1978 1979 1980 1981
        query.prefixKey("$.name");
        query.prefixKey("0");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
        console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
asfasdff 已提交
1982
### setSuggestIndex<sup>8+</sup> ###
A
asfasdff 已提交
1983

1984
setSuggestIndex(index: string): Query
A
asfasdff 已提交
1985 1986 1987

设置一个指定的索引,将优先用于查询。

W
wufengshan 已提交
1988
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
1989

A
asfasdff 已提交
1990 1991
-   参数:

1992 1993 1994
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| index  | string  | 是    |指示要设置的索引。   |
A
asfasdff 已提交
1995 1996 1997

-   返回值:

1998 1999
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
2000
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
2001 2002 2003 2004 2005

-   示例

    ```
    try {
A
asfasdff 已提交
2006
        let query = new distributedData.Query();
A
asfasdff 已提交
2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
        query.setSuggestIndex("$.name");
        query.setSuggestIndex("0");
        console.log("query is " + query.getSqlLike());
        query = null;
    } catch (e) {
       console.log("dumplicated calls should be ok :" + e);
    }
    ```


A
fix up  
asfasdff 已提交
2017 2018
### deviceId<sup>8+</sup> ###

2019
deviceId(deviceId:string):Query
A
fix up  
asfasdff 已提交
2020 2021 2022

添加设备ID作为key的前缀。

W
wufengshan 已提交
2023
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2024

A
fix up  
asfasdff 已提交
2025 2026
-   参数:

2027 2028 2029 2030
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| deviceId | string  | 是    |指示查询的设备 ID。   |

A
fix up  
asfasdff 已提交
2031 2032 2033

-   返回值:

2034 2035
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
2036
| [Query](#query8) |返回查询对象。|
A
fix up  
asfasdff 已提交
2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052

-   示例

    ```
    try {
        let query = new distributedData.Query();
        query.deviceId("deviceId");
        console.log("query is " + query.getSqlLike());
    } catch (e) {
        console.log("should be ok on Method Chaining : " + e);
    }
    ```


### getSqlLike<sup>8+</sup> ###

2053
getSqlLike():string
A
fix up  
asfasdff 已提交
2054 2055 2056

获取指定Query对象的查询语句。

W
wufengshan 已提交
2057
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2058

A
fix up  
asfasdff 已提交
2059 2060
-   返回值:

2061 2062
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
2063
| [Query](#query8) |返回查询对象。|
A
fix up  
asfasdff 已提交
2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077

-   示例

    ```
    try {
        let query = new distributedData.Query();
        let sql1 = query.getSqlLike();
        console.log("GetSqlLike sql=" + sql1);
    } catch (e) {
        console.log("dumplicated calls should be ok : " + e);
    }
    ```


2078
## KVStore
Z
zengyawen 已提交
2079 2080 2081

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

W
wufengshan 已提交
2082
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2083

2084
### put
Z
zengyawen 已提交
2085

A
asfasdff 已提交
2086
put(key: string, value: Uint8Array | string | number | boolean, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
2087 2088 2089

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

W
wufengshan 已提交
2090
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2091

A
asfasdff 已提交
2092 2093
-   参数:

2094 2095 2096
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
2097
| value  | Uint8Array / string / number / boolean  | 是    |要添加数据的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的长度不大于[MAX_VALUE_LENGTH](#constants)。   |
2098

A
asfasdff 已提交
2099 2100 2101 2102

-   示例

    ```
A
asfasdff 已提交
2103
    let kvStore;
A
asfasdff 已提交
2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119
    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);
    }
    ```


2120
### put
A
asfasdff 已提交
2121

A
asfasdff 已提交
2122
put(key: string, value: Uint8Array | string | number | boolean): Promise&lt;void&gt;
Z
zengyawen 已提交
2123 2124 2125

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

W
wufengshan 已提交
2126
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2127

A
asfasdff 已提交
2128 2129
-   参数:

2130 2131 2132
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
2133
| value  | Uint8Array / string / number / boolean  | 是    |要添加数据的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的长度不大于[MAX_VALUE_LENGTH](#constants)。   |
A
asfasdff 已提交
2134 2135 2136

-   返回值:

2137 2138 2139
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2140 2141 2142 2143 2144


-   示例

    ```
A
asfasdff 已提交
2145
    let kvStore;
A
asfasdff 已提交
2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159
    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);
    }
    ```


2160
### delete
A
asfasdff 已提交
2161

A
asfasdff 已提交
2162
delete(key: string, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
2163 2164 2165

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

W
wufengshan 已提交
2166
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2167

A
asfasdff 已提交
2168 2169
-   参数:

2170 2171 2172 2173
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
| callback  | AsyncCallback&lt;void&gt;  | 是    |回调函数。   |
A
asfasdff 已提交
2174 2175 2176 2177

-   示例

    ```
A
asfasdff 已提交
2178
    let kvStore;
A
asfasdff 已提交
2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201
    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);
    }
    ```


2202
### delete
A
asfasdff 已提交
2203

A
asfasdff 已提交
2204
delete(key: string): Promise&lt;void&gt;
Z
zengyawen 已提交
2205 2206 2207

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

W
wufengshan 已提交
2208
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2209

A
asfasdff 已提交
2210 2211
-   参数:

2212 2213 2214
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
A
asfasdff 已提交
2215 2216 2217

-   返回值:

2218 2219 2220
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2221 2222 2223 2224

-   示例

    ```
A
asfasdff 已提交
2225
    let kvStore;
A
asfasdff 已提交
2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244
    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);
    }
    ```


2245
### on
A
asfasdff 已提交
2246

A
asfasdff 已提交
2247
on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;ChangeNotification&gt;): void
Z
zengyawen 已提交
2248 2249 2250

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

W
wufengshan 已提交
2251
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2252

A
asfasdff 已提交
2253 2254
-   参数:

2255 2256 2257
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |'dataChange'  | 是    |回调函数名称。       |
Z
zengyawen 已提交
2258 2259
| type  |[SubscribeType](#subscribetype) | 是    |表示订阅的类型。     |
| observer |Callback&lt;[ChangeNotification](#changenotification)&gt; | 是    |回调函数。 |
2260

A
asfasdff 已提交
2261 2262 2263 2264

-   示例

    ```
A
asfasdff 已提交
2265 2266
    let kvStore;
    kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
A
asfasdff 已提交
2267 2268 2269 2270 2271
        console.log("dataChange callback call data: " + JSON.stringify(data));
    });
    ```


2272
### on
A
asfasdff 已提交
2273

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

A
asfasdff 已提交
2276
订阅同步完成事件回调通知,此方法为同步方法。
Z
zengyawen 已提交
2277

W
wufengshan 已提交
2278
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2279

A
asfasdff 已提交
2280 2281
-   参数:

2282 2283 2284
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |'syncComplete' | 是    |回调函数名称。       |
2285
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt; | 是    |回调函数。     |
2286

A
asfasdff 已提交
2287 2288 2289 2290

-   示例

    ```
A
asfasdff 已提交
2291
    let kvStore;
A
asfasdff 已提交
2292 2293 2294 2295 2296
    kvStore.on('syncComplete', function (data) {
        console.log("syncComplete callback call data: " + data);
    });
    ```

2297
### off<sup>8+</sup>
A
asfasdff 已提交
2298

2299
off(event:'dataChange', observer?: Callback&lt;ChangeNotification&gt;): void
A
asfasdff 已提交
2300

A
asfasdff 已提交
2301
取消订阅数据变更通知,此方法为同步方法。
A
asfasdff 已提交
2302

W
wufengshan 已提交
2303
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2304

A
asfasdff 已提交
2305 2306
-   参数:

2307 2308 2309
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |'dataChange'  | 是    |回调函数名称。       |
Z
zengyawen 已提交
2310
| observer |Callback&lt;[ChangeNotification](#changenotification)&gt; |否    |回调函数。 |
A
asfasdff 已提交
2311

A
asfasdff 已提交
2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324
-   示例

    ```
    let kvStore;
    kvStore.on('dataChange', function (data) {
        console.log("syncComplete callback call data: " + data);
    });
    kvStore.off('dataChange', function (data) {
        console.log("syncComplete callback call data: " + data);
    });
    ```


2325
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2326

2327
putBatch(entries: Entry[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2328 2329 2330

批量插入键值对到KvStore数据库中,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
2331
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2332

A
asfasdff 已提交
2333 2334
-   参数:

2335 2336 2337 2338
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| entries  |[Entry](#entry)[] | 是    |表示要批量插入的键值对。  |
| callback |Asyncallback&lt;void&gt; |是     |回调函数。 |
A
asfasdff 已提交
2339

A
asfasdff 已提交
2340
-   示例
A
asfasdff 已提交
2341

A
asfasdff 已提交
2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368
    ```
    let kvStore;
    try {
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        console.log('entries: ' + JSON.stringify(entries));
        kvStore.putBatch(entries, async function (err,data) {
            console.log('putBatch success');
            await kvStore.getEntries('batch_test_string_key', function (err,entrys) {
                console.log('getEntries success');
                console.log('entrys.length: ' + entrys.length);
                console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
            });
        });
    }catch(e) {
        console.log('PutBatch e ' + e);
    }
2369
    
A
asfasdff 已提交
2370 2371 2372
    ```


2373
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2374

2375
putBatch(entries: Entry[]): Promise&lt;void&gt;
A
asfasdff 已提交
2376 2377 2378

批量插入键值对到KvStore数据库中,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
2379
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2380

A
asfasdff 已提交
2381 2382
-   参数:

2383 2384 2385
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| entries  |[Entry](#entry)[] | 是    |表示要批量插入的键值对。  |
A
asfasdff 已提交
2386 2387 2388

-   返回值:

2389 2390 2391
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2392

A
asfasdff 已提交
2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427
-   示例

    ```
    let kvStore;
    try {
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    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');
            await kvStore.getEntries('batch_test_string_key').then((entrys) => {
                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 ' + e);
    }
    ```


2428
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2429

2430
deleteBatch(keys: string[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2431 2432 2433

批量删除KvStore数据库中的键值对,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
2434
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2435

A
asfasdff 已提交
2436 2437
-   参数:

2438 2439 2440 2441
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keys  |string[] | 是    |表示要批量删除的键值对。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2442

A
asfasdff 已提交
2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474
-   示例

    ```
    let kvStore;
    try {
        let entries = [];
        let keys = [];
        for (var i = 0; i < 5; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
            keys.push(key + i);
        }
        console.log('entries: ' + JSON.stringify(entries));
        kvStore.putBatch(entries, async function (err,data) {
            console.log('putBatch success');
            await kvStore.deleteBatch(keys, async function (err,data) {
                console.log('deleteBatch success');
            });
        });
    }catch(e) {
        console.log('DeleteBatch e ' + e);
    }
    ```


A
asfasdff 已提交
2475
### deleteBatch<sup>8+</sup> ###
A
asfasdff 已提交
2476

2477
deleteBatch(keys: string[]): Promise&lt;void&gt;
A
asfasdff 已提交
2478 2479 2480

批量删除键值对到KvStore数据库中,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
2481
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2482

A
asfasdff 已提交
2483 2484
-   参数:

2485 2486 2487
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keys   |string[] | 是    |表示要批量删除的键值对。  |
A
asfasdff 已提交
2488 2489 2490

-   返回值:

2491 2492 2493
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2494

A
asfasdff 已提交
2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522
-   示例

    ```
    let kvStore;
    try {
        let entries = [];
        let keys = [];
        for (var i = 0; i < 5; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
            keys.push(key + i);
        }
        console.log('entries: ' + JSON.stringify(entries));
        kvStore.putBatch(entries).then(async (err) => {
            console.log('putBatch success');
            await kvStore.deleteBatch(keys).then((err) => {
                console.log('deleteBatch success');
            }).catch((err) => {
                console.log('deleteBatch fail ' + JSON.stringify(err));
            });
        }).catch((err) => {
A
asfasdff 已提交
2523
            console.log('putBatch fail ' + JSON.stringify(err));
A
asfasdff 已提交
2524 2525 2526 2527 2528 2529 2530
        });
    }catch(e) {
        console.log('DeleteBatch e ' + e);
    }
    ```


A
asfasdff 已提交
2531
### startTransaction<sup>8+</sup> ###
A
asfasdff 已提交
2532

2533
startTransaction(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2534 2535 2536

启动KvStore数据库中的事务,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
2537
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2538

A
asfasdff 已提交
2539 2540
-   参数:

2541 2542 2543
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2544

A
asfasdff 已提交
2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582
-   示例

    ```
    let kvStore;
    function putBatchString(len, prefix) {
        let entries = [];
        for (var i = 0; i < len; i++) {
            var entry = {
                key : prefix + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        return entries;
    }
    try {
        var count = 0;
        kvStore.on('dataChange', 0, function (data) {
            console.log('startTransaction 0' + data)
            count++;
        });
        kvStore.startTransaction(async function (err,data) {
            console.log('startTransaction success');
            let entries = putBatchString(10, 'batch_test_string_key');
            console.log('entries: ' + JSON.stringify(entries));
            await kvStore.putBatch(entries, async function (err,data) {
                console.log('putBatch success');
            });
        });
    }catch(e) {
        console.log('startTransaction e ' + e);
    }
    ```


A
asfasdff 已提交
2583
### startTransaction<sup>8+</sup> ###
A
asfasdff 已提交
2584

2585
startTransaction(): Promise&lt;void&gt;
A
asfasdff 已提交
2586 2587 2588

启动KvStore数据库中的事务,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
2589
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2590

A
asfasdff 已提交
2591 2592
-   返回值:

2593 2594 2595
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2596

A
asfasdff 已提交
2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617
-   示例

    ```
    let kvStore;
    try {
        var count = 0;
        kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_ALL, function (data) {
            console.log('startTransaction ' + JSON.stringify(data));
            count++;
        });
        kvStore.startTransaction().then(async (err) => {
            console.log('startTransaction success');
        }).catch((err) => {
            console.log('startTransaction fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('startTransaction e ' + e);
    }
    ```


A
asfasdff 已提交
2618
### commit<sup>8+</sup> ###
A
asfasdff 已提交
2619

2620
commit(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2621 2622 2623

提交KvStore数据库中的事务,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
2624
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2625

A
asfasdff 已提交
2626 2627
-   参数:

2628 2629 2630
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2631

A
asfasdff 已提交
2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649
-   示例

    ```
    let kvStore;
    try {
        kvStore.commit(function (err,data) {
            if (err == undefined) {
                console.log('commit success');
            } else {
                console.log('commit fail');
            }
        });
    }catch(e) {
        console.log('Commit e ' + e);
    }
    ```


A
asfasdff 已提交
2650
### commit<sup>8+</sup> ###
A
asfasdff 已提交
2651

2652
commit(): Promise&lt;void&gt;
A
asfasdff 已提交
2653 2654 2655

提交KvStore数据库中的事务,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
2656
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2657

A
asfasdff 已提交
2658 2659
-   返回值:

2660 2661 2662
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2663

A
asfasdff 已提交
2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679
-   示例

    ```
    let kvStore;
    try {
        kvStore.commit().then(async (err) => {
            console.log('commit success');
        }).catch((err) => {
            console.log('commit fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('Commit e ' + e);
    }
    ```


A
asfasdff 已提交
2680
### rollback<sup>8+</sup> ###
A
asfasdff 已提交
2681

2682
rollback(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2683 2684 2685

在KvStore数据库中回滚事务,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
2686
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2687

A
asfasdff 已提交
2688 2689
-   参数:

2690 2691 2692
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2693

A
asfasdff 已提交
2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711
-   示例

    ```
    let kvStore;
    try {
        kvStore.rollback(function (err,data) {
            if (err == undefined) {
                console.log('commit success');
            } else {
                console.log('commit fail');
            }
        });
    }catch(e) {
        console.log('Rollback e ' + e);
    }
    ```


A
asfasdff 已提交
2712
### rollback<sup>8+</sup> ###
A
asfasdff 已提交
2713

2714
rollback(): Promise&lt;void&gt;
A
asfasdff 已提交
2715 2716 2717

在KvStore数据库中回滚事务,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
2718
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2719

A
asfasdff 已提交
2720 2721
-   返回值:

2722 2723 2724
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2725

A
asfasdff 已提交
2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741
-   示例

    ```
    let kvStore;
    try {
        kvStore.rollback().then(async (err) => {
            console.log('rollback success');
        }).catch((err) => {
            console.log('rollback fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('Rollback e ' + e);
    }
    ```


A
asfasdff 已提交
2742
### enableSync<sup>8+</sup> ###
A
asfasdff 已提交
2743

2744
enableSync(enabled: boolean, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2745 2746 2747

设定是否开启同步,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
2748
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2749

A
asfasdff 已提交
2750 2751
-   参数:

2752 2753 2754 2755
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| enabled  |boolean | 是    |指定是否开启同步,ture表示开启同步,false表示不启用同步。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2756

A
asfasdff 已提交
2757 2758 2759 2760 2761 2762 2763
-   示例

    ```
    let kvStore;
    try {
        kvStore.enableSync(true, function (err,data) {
            if (err == undefined) {
A
asfasdff 已提交
2764
                console.log('enableSync success');
A
asfasdff 已提交
2765 2766 2767 2768 2769 2770 2771 2772 2773 2774
            } else {
                console.log('enableSync fail');
            }
        });
    }catch(e) {
        console.log('EnableSync e ' + e);
    }
    ```


A
asfasdff 已提交
2775
### enableSync<sup>8+</sup> ###
A
asfasdff 已提交
2776

2777
enableSync(enabled: boolean): Promise&lt;void&gt;
A
asfasdff 已提交
2778 2779 2780

设定是否开启同步,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
2781
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2782

A
asfasdff 已提交
2783 2784
-   参数:

2785 2786 2787
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| enabled  |boolean | 是    |指定是否开启同步,ture表示开启同步,false表示不启用同步。  |
A
asfasdff 已提交
2788 2789 2790

-   返回值:

2791 2792 2793
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2794

A
asfasdff 已提交
2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810
-   示例

    ```
    let kvStore;
    try {
        kvStore.enableSync(true).then((err) => {
            console.log('enableSync success');
        }).catch((err) => {
            console.log('enableSync fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('EnableSync e ' + e);
    }
    ```


A
asfasdff 已提交
2811
### setSyncRange<sup>8+</sup> ###
A
asfasdff 已提交
2812

2813
setSyncRange(localLabels: string[], remoteSupportLabels: string[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2814 2815 2816

设置同步范围标签,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
2817
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2818

A
asfasdff 已提交
2819 2820
-   参数:

2821 2822 2823 2824 2825
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2826

A
asfasdff 已提交
2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842
-   示例

    ```
    let kvStore;
    try {
        const localLabels = ['A', 'B'];
        const remoteSupportLabels = ['C', 'D'];
        kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err,data) {
            console.log('SetSyncRange put success');
        });
    }catch(e) {
        console.log('SetSyncRange e ' + e);
    }
    ```


A
asfasdff 已提交
2843
### setSyncRange<sup>8+</sup> ###
A
asfasdff 已提交
2844

2845
setSyncRange(localLabels: string[], remoteSupportLabels: string[]): Promise&lt;void&gt;
A
asfasdff 已提交
2846 2847 2848

设置同步范围标签,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
2849
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2850

A
asfasdff 已提交
2851 2852
-   参数:

2853 2854 2855 2856 2857
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |

A
asfasdff 已提交
2858 2859 2860

-   返回值:

2861 2862 2863
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2864

A
asfasdff 已提交
2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882
-   示例

    ```
    let kvStore;
    try {
        const localLabels = ['A', 'B'];
        const remoteSupportLabels = ['C', 'D'];
        kvStore.setSyncRange(localLabels, remoteSupportLabels).then((err) => {
            console.log('setSyncRange success');
        }).catch((err) => {
            console.log('delete fail ' + err);
        });
    }catch(e) {
        console.log('SetSyncRange e ' + e);
    }
    ```


2883
## SubscribeType
Z
zengyawen 已提交
2884 2885 2886

描述订阅类型。

2887 2888
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

2889 2890 2891 2892 2893 2894 2895
| 名称  | 默认值   | 说明                    |
| -----  | ------   | ----------------------- |
| SUBSCRIBE_TYPE_LOCAL  |0 |表示订阅本地数据变更。  |
| SUBSCRIBE_TYPE_REMOTE |1 |表示订阅远端数据变更。  |
| SUBSCRIBE_TYPE_ALL  |2 |表示订阅远端和本地数据变更。  |

## ChangeNotification
Z
zengyawen 已提交
2896 2897 2898

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

2899 2900
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

2901 2902 2903 2904 2905 2906 2907 2908
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| insertEntries | [Entry](#entry)[]   | 是  |  是 |数据添加记录。   |
| updateEntries | [Entry](#entry)[]   | 是  |  是 |数据更新记录。   |
| deleteEntries | [Entry](#entry)[]   | 是  |  是 |数据删除记录。   |
| deviceId | string   | 是  |  是 |设备ID,此处为设备UUID。  |

## Entry
Z
zengyawen 已提交
2909 2910 2911

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

2912 2913
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

2914 2915 2916 2917 2918 2919 2920
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| key | string   | 是  |  是 |键值。   |
| value | [Value](#value) | 是  |  是 |值对象。   |


## Value
Z
zengyawen 已提交
2921 2922 2923

存储在数据库中的对象。

2924 2925
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

2926 2927 2928 2929 2930 2931
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| type | [ValueType](#value)   | 是  |  是 |值类型。   |
| value | Uint8Array / string / number / boolean| 是  |  是 |值对象。   |

## ValueType
Z
zengyawen 已提交
2932 2933 2934 2935 2936

用于表示数据类型。

只能被内部应用使用。

2937 2938
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

2939 2940 2941 2942 2943 2944 2945 2946 2947 2948
| 名称  | 默认值   | 说明                    |
| -----  | ------   | ----------------------- |
| STRING  |0 |表示值类型为字符串。  |
| INTEGER |1 |表示值类型为整数。  |
| FLOAT   |2 |表示值类型为浮点数。  |
| BYTE_ARRAY   |3 |表示值类型为字节数组。  |
| BOOLEAN   |4 |表示值类型为布尔值。  |
| DOUBLE   |5 |表示值类型为双浮点数。  |

## SingleKVStore
Z
zengyawen 已提交
2949

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

W
wufengshan 已提交
2952
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2953

2954
### get
Z
zengyawen 已提交
2955

A
asfasdff 已提交
2956
get(key: string, callback: AsyncCallback&lt;Uint8Array | string | boolean | number&gt;): void
Z
zengyawen 已提交
2957 2958 2959

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

W
wufengshan 已提交
2960
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2961

A
asfasdff 已提交
2962 2963
-   参数:

2964 2965 2966 2967
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    |string   | 是    |要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。  |
| callback  |AsyncCallback&lt;Uint8Array / string / boolean / number&gt;) | 是    |回调函数,获取查询的值。  |
A
asfasdff 已提交
2968 2969 2970 2971

-   示例

    ```
A
asfasdff 已提交
2972
    let kvStore;
A
asfasdff 已提交
2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991
    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);
    }
    ```


2992
### get
A
asfasdff 已提交
2993

2994
get(key: string): Promise&lt;Uint8Array | string | boolean | number&gt
Z
zengyawen 已提交
2995 2996 2997

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

W
wufengshan 已提交
2998
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
2999

A
asfasdff 已提交
3000 3001
-   参数:

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

A
asfasdff 已提交
3006 3007 3008

-   返回值:

3009 3010 3011
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;Uint8Array / string / boolean / number&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3012 3013 3014 3015 3016


-   示例

    ```
A
asfasdff 已提交
3017
    let kvStore;
A
asfasdff 已提交
3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035
    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);
    }
    ```

A
asfasdff 已提交
3036
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3037

3038
getEntries(keyPrefix: string, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
3039 3040 3041

获取匹配指定键前缀的所有键值对,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
3042
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3043

A
asfasdff 已提交
3044 3045
-   参数:

3046 3047 3048 3049
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
| callback    |AsyncCallback&lt;Entry[]&gt;   | 是    |回调函数,获取指定前缀的键值对列表。  |
A
asfasdff 已提交
3050 3051 3052 3053

-   示例

    ```
A
asfasdff 已提交
3054
    let kvStore;
A
asfasdff 已提交
3055 3056 3057 3058 3059 3060 3061
    try {
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_number_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
3062
                    type : distributedData.ValueType.INTEGER,
A
asfasdff 已提交
3063 3064 3065 3066 3067 3068 3069
                    value : 222
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries, async function (err,data) {
            console.log('putBatch success');
A
asfasdff 已提交
3070
            await kvStore.getEntries('batch_test_number_key', function (err,entrys) {
A
asfasdff 已提交
3071 3072 3073
                console.log('getEntries success');
                console.log('entrys.length: ' + entrys.length);
                console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
A
asfasdff 已提交
3074
            });
A
asfasdff 已提交
3075 3076 3077 3078 3079 3080 3081
        });
    }catch(e) {
        console.log('PutBatch e ' + e);
    }
    ```


A
asfasdff 已提交
3082
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3083

3084
getEntries(keyPrefix: string): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
3085 3086 3087

获取匹配指定键前缀的所有键值对,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
3088
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3089

A
asfasdff 已提交
3090 3091
-   参数:

3092 3093 3094
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
A
asfasdff 已提交
3095 3096 3097

-   返回值:

3098 3099 3100
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3101 3102 3103 3104

-   示例

    ```
A
asfasdff 已提交
3105
    let kvStore;
A
asfasdff 已提交
3106 3107 3108 3109 3110 3111 3112
    try {
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
3113
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
3114 3115 3116 3117 3118 3119 3120 3121
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        console.log('entries: ' + entries);
        kvStore.putBatch(entries).then(async (err) => {
            console.log('putBatch success');
A
asfasdff 已提交
3122
            await kvStore.getEntries('batch_test_string_key').then((entrys) => {
A
asfasdff 已提交
3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134
                console.log('getEntries success');
                console.log('entrys.length: ' + entrys.length);
                console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
                console.log('entrys[0].value: ' + JSON.stringify(entrys[0].value));
                console.log('entrys[0].value.value: ' + entrys[0].value.value);
            }).catch((err) => {
                console.log('getEntries fail ' + JSON.stringify(err));
            });
        }).catch((err) => {
            console.log('putBatch fail ' + JSON.stringify(err));
        });
    }catch(e) {
A
asfasdff 已提交
3135
        console.log('PutBatch e ' + e);
A
asfasdff 已提交
3136 3137 3138 3139
    }
    ```


A
asfasdff 已提交
3140
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3141

3142
getEntries(query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
3143 3144 3145

获取与指定 Query 对象匹配的键值对列表,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
3146
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3147

A
asfasdff 已提交
3148 3149
-   参数:

3150 3151
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
3152
| query  |[Query](#query8)   | 是    |表示要匹配的键前缀。  |
3153
| callback  |AsyncCallback&lt;Entry[]&gt;   | 是    |回调函数,获取指定前缀的键值对列表。  |
A
asfasdff 已提交
3154 3155 3156 3157

-   示例

    ```
A
asfasdff 已提交
3158
    let kvStore;
A
asfasdff 已提交
3159 3160 3161 3162 3163 3164 3165 3166
    try {
        var arr = new Uint8Array([21,31]);
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_bool_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
3167
                    type : distributedData.ValueType.BYTE_ARRAY,
A
asfasdff 已提交
3168 3169 3170 3171 3172
                    value : arr
                }
            }
            entries.push(entry);
        }
A
asfasdff 已提交
3173
        console.log('entries: ' + JSON.stringify(entries));
A
asfasdff 已提交
3174 3175
        kvStore.putBatch(entries, async function (err,data) {
            console.log('putBatch success');
A
asfasdff 已提交
3176 3177 3178
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            await kvStore.getEntries(query, function (err,entrys) {
A
asfasdff 已提交
3179 3180
                console.log('getEntries success');
                console.log('entrys.length: ' + entrys.length);
A
asfasdff 已提交
3181
                console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
A
asfasdff 已提交
3182 3183
            });
        });
A
asfasdff 已提交
3184
        console.log('GetEntries success');
A
asfasdff 已提交
3185
    }catch(e) {
A
asfasdff 已提交
3186
        console.log('GetEntries e ' + e);
A
asfasdff 已提交
3187 3188 3189 3190
    }
    ```


A
asfasdff 已提交
3191
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3192

3193
getEntries(query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
3194 3195 3196

获取匹配指定键前缀的所有键值对,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
3197
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core
3198

A
asfasdff 已提交
3199 3200
-   参数:

3201 3202
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
3203
| query  |[Query](#query8)   | 是    |表示查询对象。  |
A
asfasdff 已提交
3204 3205 3206

-   返回值:

3207 3208 3209
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221

-   示例

    ```
    try {
        var arr = new Uint8Array([21,31]);
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_bool_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
3222
                    type : distributedData.ValueType.BYTE_ARRAY,
A
asfasdff 已提交
3223 3224 3225 3226 3227
                    value : arr
                }
            }
            entries.push(entry);
        }
A
asfasdff 已提交
3228
        console.log('entries: ' + JSON.stringify(entries));
A
asfasdff 已提交
3229
        kvStore.putBatch(entries).then(async (err) => {
A
asfasdff 已提交
3230 3231
            console.log('putBatch success');
            const query = new distributedData.Query();
A
asfasdff 已提交
3232
            query.prefixKey("batch_test");
A
asfasdff 已提交
3233 3234
            await kvStore.getEntries(query).then((entrys) => {
                console.log('getEntries success');
A
asfasdff 已提交
3235
            }).catch((err) => {
A
asfasdff 已提交
3236
                console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3237 3238
            });
        }).catch((err) => {
A
asfasdff 已提交
3239
            console.log('GetEntries putBatch fail ' + JSON.stringify(err))
A
asfasdff 已提交
3240 3241 3242 3243 3244 3245 3246 3247
        });
        console.log('GetEntries success');
    }catch(e) {
        console.log('GetEntries e ' + e);
    }
    ```


A
asfasdff 已提交
3248
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3249

3250
getResultSet(keyPrefix: string, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
3251 3252 3253

从 KvStore 数据库中获取具有指定前缀的结果集,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
3254
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3255

A
asfasdff 已提交
3256 3257
-   参数:

3258 3259 3260
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
Z
zengyawen 已提交
3261
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;   | 是    |表示要匹配的键前缀。 |
A
asfasdff 已提交
3262 3263 3264 3265

-   示例

    ```
A
asfasdff 已提交
3266
    let kvStore;
A
asfasdff 已提交
3267 3268 3269 3270 3271 3272 3273 3274
    try {
        let resultSet;
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
3275
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
3276 3277 3278 3279 3280 3281 3282
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries, async function (err, data) {
            console.log('GetResultSet putBatch success');
A
asfasdff 已提交
3283
            await kvStore.getResultSet('batch_test_string_key', async function (err, result) {
A
asfasdff 已提交
3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296
                console.log('GetResultSet getResultSet success');
                resultSet = result;
                kvStore.closeResultSet(resultSet, function (err, data) {
                    console.log('GetResultSet closeResultSet success');
                })
            });
        });
    }catch(e) {
        console.log('GetResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
3297
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3298

3299
getResultSet(keyPrefix: string): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
3300 3301 3302

从 KvStore 数据库中获取具有指定前缀的结果集,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
3303
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3304

A
asfasdff 已提交
3305 3306
-   参数:

3307 3308 3309
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
A
asfasdff 已提交
3310 3311 3312

-   返回值:

3313 3314
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
3315
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3316 3317 3318 3319

-   示例

    ```
A
asfasdff 已提交
3320
    let kvStore;
A
asfasdff 已提交
3321 3322 3323 3324 3325 3326 3327 3328
    try {
        let resultSet;
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
3329
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
3330 3331 3332 3333 3334 3335
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries).then(async (err) => {
A
asfasdff 已提交
3336
            console.log('putBatch success');
A
asfasdff 已提交
3337 3338 3339 3340 3341 3342 3343
        }).catch((err) => {
            console.log('PutBatch putBatch fail ' + JSON.stringify(err));
        });
        kvStore.getResultSet('batch_test_string_key').then((result) => {
            console.log('GetResult getResultSet success');
            resultSet = result;
        }).catch((err) => {
A
asfasdff 已提交
3344
            console.log('getResultSet fail ' + JSON.stringify(err));
A
asfasdff 已提交
3345 3346 3347 3348
        });
        kvStore.closeResultSet(resultSet).then((err) => {
            console.log('GetResult closeResultSet success');
        }).catch((err) => {
A
asfasdff 已提交
3349
            console.log('closeResultSet fail ' + JSON.stringify(err));
A
asfasdff 已提交
3350 3351 3352 3353 3354 3355 3356
        });
    }catch(e) {
        console.log('GetResult e ' + e);
    }
    ```


A
asfasdff 已提交
3357
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3358

3359
getResultSet(query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
3360 3361 3362

获取与指定 Query 对象匹配的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
3363
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3364

A
asfasdff 已提交
3365 3366
-   参数:

3367 3368 3369
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| query  |Query    | 是    |表示查询对象。             |
Z
zengyawen 已提交
3370
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;   | 是    |回调函数,获取与指定 Query 对象匹配的 KvStoreResultSet 对象。 |
A
asfasdff 已提交
3371 3372 3373 3374

-   示例

    ```
A
asfasdff 已提交
3375
    let kvStore;
A
asfasdff 已提交
3376 3377 3378 3379 3380 3381 3382 3383
    try {
        let resultSet;
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
3384
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
3385 3386 3387 3388 3389 3390 3391
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries, async function (err, data) {
            console.log('putBatch success');
A
asfasdff 已提交
3392 3393 3394
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            await kvStore.getResultSet(query, async function (err, result) {
A
asfasdff 已提交
3395 3396 3397 3398
                console.log('getResultSet success');
                resultSet = result;
            });
        });
A
asfasdff 已提交
3399
    } catch(e) {
A
asfasdff 已提交
3400 3401 3402 3403 3404
        console.log('GetResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
3405
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3406

3407
getResultSet(query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
3408 3409 3410

获取与指定 Query 对象匹配的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
3411
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3412

A
asfasdff 已提交
3413 3414
-   参数:

3415 3416
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3417
| query  |[Query](#query8)    | 是    |表示查询对象。             |
A
asfasdff 已提交
3418 3419 3420

-   返回值:

3421 3422
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
3423
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3424 3425 3426 3427

-   示例

    ```
A
asfasdff 已提交
3428
    let kvStore;
A
asfasdff 已提交
3429 3430 3431 3432 3433 3434 3435 3436
    try {
        let resultSet;
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
3437
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
3438 3439 3440 3441 3442 3443 3444 3445
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries).then(async (err) => {
            console.log('putBatch success');
        }).catch((err) => {
A
asfasdff 已提交
3446
            console.log('putBatch fail ' + JSON.stringify(err));
A
asfasdff 已提交
3447
        });
A
asfasdff 已提交
3448 3449 3450 3451 3452
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSet(query).then((result) => {
            console.log(' getResultSet success');
            resultSet = result;
A
asfasdff 已提交
3453
        }).catch((err) => {
A
asfasdff 已提交
3454
            console.log('getResultSet fail ' + JSON.stringify(err));
A
asfasdff 已提交
3455 3456
        });
    }catch(e) {
A
asfasdff 已提交
3457
        console.log('GetResultSet e ' + e);
A
asfasdff 已提交
3458 3459 3460
    }
    ```

A
asfasdff 已提交
3461
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3462

3463
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3464 3465 3466

关闭由 getResultSet 返回的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
3467
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3468

A
asfasdff 已提交
3469 3470
-   参数:

3471 3472
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3473
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的 KvStoreResultSet 对象。             |
3474
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数,获取由 getResultSet 返回的 KvStoreResultSet 对象。             |
A
asfasdff 已提交
3475 3476 3477 3478

-   示例

    ```
A
asfasdff 已提交
3479
    let kvStore;
A
asfasdff 已提交
3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494
    try {
        let resultSet = null;
        kvStore.closeResultSet(resultSet, function (err, data) {
            if (err == undefined) {
                console.log('closeResultSet success');
            } else {
                console.log('closeResultSet fail');
            }
        });
    }catch(e) {
        console.log('CloseResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
3495
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3496

3497
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
3498 3499 3500

关闭由 getResultSet 返回的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
3501
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3502

A
asfasdff 已提交
3503 3504
-   参数:

3505 3506
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3507
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的 KvStoreResultSet 对象。             |
A
asfasdff 已提交
3508 3509 3510

-   返回值:

3511 3512 3513
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3514 3515 3516 3517

-   示例

    ```
A
asfasdff 已提交
3518
    let kvStore;
A
asfasdff 已提交
3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531
    try {
        let resultSet = null;
        kvStore.closeResultSet(resultSet).then(() => {
            console.log('closeResultSet success');
        }).catch((err) => {
            console.log('closeResultSet fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('CloseResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
3532
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
3533

3534
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
3535 3536 3537

获取与指定 Query 对象匹配的结果数,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
3538
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3539

A
asfasdff 已提交
3540 3541
-   参数:

3542 3543
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3544
| query  |[Query](#query8)   | 是    |表示查询对象。         |
3545
| callback  |AsyncCallback&lt;number&gt;   | 是    |回调函数,获取与指定 Query 对象匹配的结果数。         |
A
asfasdff 已提交
3546 3547 3548 3549

-   示例

    ```
A
asfasdff 已提交
3550
    let kvStore;
A
asfasdff 已提交
3551
    try {
A
asfasdff 已提交
3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries, async function (err, data) {
            console.log('putBatch success');
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            await kvStore.getResultSize(query, async function (err, resultSize) {
                console.log('getResultSet success');
            });
        });
    } catch(e) {
A
asfasdff 已提交
3573 3574 3575 3576 3577
        console.log('GetResultSize e ' + e);
    }
    ```


A
asfasdff 已提交
3578
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
3579

3580
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
3581 3582 3583

获取与指定 Query 对象匹配的结果数,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
3584
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3585

A
asfasdff 已提交
3586 3587
-   参数:

3588 3589
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3590
| query  |[Query](#query8)   | 是    |表示查询对象。         |
A
asfasdff 已提交
3591 3592 3593

-   返回值:

3594 3595 3596
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;number&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3597 3598 3599 3600

-   示例

    ```
A
asfasdff 已提交
3601
    let kvStore;
A
asfasdff 已提交
3602
    try {
A
asfasdff 已提交
3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries).then(async (err) => {
            console.log('putBatch success');
        }).catch((err) => {
            console.log('putBatch fail ' + JSON.stringify(err));
        });
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSize(query).then((resultSize) => {
            console.log('getResultSet success');
        }).catch((err) => {
            console.log('getResultSet fail ' + JSON.stringify(err));
        });
A
asfasdff 已提交
3627 3628 3629 3630 3631 3632
    }catch(e) {
        console.log('GetResultSize e ' + e);
    }
    ```


A
asfasdff 已提交
3633
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
3634

3635
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3636 3637 3638

删除指定设备的数据,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
3639
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3640

A
asfasdff 已提交
3641 3642
-   参数:

3643 3644 3645 3646
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。      |
A
asfasdff 已提交
3647 3648 3649 3650

-   示例

    ```
A
asfasdff 已提交
3651
    let kvStore;
A
asfasdff 已提交
3652
    const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
A
asfasdff 已提交
3653
    const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
A
asfasdff 已提交
3654 3655 3656 3657
    try {
        kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
            console.log('put success');
            const deviceid = 'no_exist_device_id';
A
asfasdff 已提交
3658
            await kvStore.removeDeviceData(deviceid, async function (err,data) {
A
asfasdff 已提交
3659 3660 3661 3662
                if (err == undefined) {
                    console.log('removeDeviceData success');
                } else {
                    console.log('removeDeviceData fail');
A
asfasdff 已提交
3663
                    await kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err,data) {
A
asfasdff 已提交
3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674
                        console.log('RemoveDeviceData get success');
                    });
                }
            });
        });
    }catch(e) {
        console.log('RemoveDeviceData e ' + e);
    }
    ```


A
asfasdff 已提交
3675
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
3676

3677
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
3678 3679 3680

删除指定设备的数据,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
3681
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3682

A
asfasdff 已提交
3683 3684
-   参数:

3685 3686 3687
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
A
asfasdff 已提交
3688 3689 3690

-   返回值:

3691 3692 3693
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3694 3695 3696 3697

-   示例

    ```
A
asfasdff 已提交
3698
    let kvStore;
A
asfasdff 已提交
3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723
    const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
    const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
    try {
        kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((err) => {
            console.log('removeDeviceData put success');
        }).catch((err) => {
            console.log('put fail ' + JSON.stringify(err));
        });
        const deviceid = 'no_exist_device_id';
        kvStore.removeDeviceData(deviceid).then((err) => {
            console.log('removeDeviceData success');
        }).catch((err) => {
            console.log('removeDeviceData fail ' + JSON.stringify(err));
        });
        kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log('get success data:' + data);
        }).catch((err) => {
            console.log('RemoveDeviceData get fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('RemoveDeviceData e ' + e);
    }
    ```


A
asfasdff 已提交
3724
### on<sup>8+</sup> ###
A
asfasdff 已提交
3725

3726
on(event: 'syncComplete', syncCallback: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
3727

A
asfasdff 已提交
3728
订阅同步完成事件回调通知,此方法为同步方法。
A
asfasdff 已提交
3729

W
wufengshan 已提交
3730
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3731

A
asfasdff 已提交
3732 3733
-   参数:

3734 3735 3736
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| event  |'syncComplete'   | 是    |同步完成时触发的事件名。    |
3737
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 是    |用于向调用方发送同步结果的回调。    |
A
asfasdff 已提交
3738 3739 3740 3741

-   示例

    ```
A
asfasdff 已提交
3742
    let kvStore;
A
asfasdff 已提交
3743 3744 3745
    const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
    const VALUE_TEST_FLOAT_ELEMENT = 321.12;
    try {
A
asfasdff 已提交
3746 3747
        kvStore.on('syncComplete', function (data) {
            console.log('syncComplete ' + data)
A
asfasdff 已提交
3748 3749
        });
        kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
A
asfasdff 已提交
3750
            console.log('syncComplete put success');
A
asfasdff 已提交
3751
        }).catch((error) => {
A
asfasdff 已提交
3752
            console.log('syncComplete put fail ' + error);
A
asfasdff 已提交
3753 3754
        });
    }catch(e) {
A
asfasdff 已提交
3755
        console.log('syncComplete put e ' + e);
A
asfasdff 已提交
3756 3757 3758 3759
    }
    ```


A
asfasdff 已提交
3760
### off<sup>8+</sup> ###
A
asfasdff 已提交
3761

3762
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
3763

A
asfasdff 已提交
3764
取消订阅同步完成事件回调通知,此方法为同步方法。
A
asfasdff 已提交
3765

W
wufengshan 已提交
3766
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3767

A
asfasdff 已提交
3768 3769
-   参数:

3770 3771 3772
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| event  |'syncComplete'   | 是    |同步完成时触发的事件名。    |
3773
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 否    |用于向调用方发送同步结果的回调。    |
3774

A
asfasdff 已提交
3775 3776 3777 3778

-   示例

    ```
A
asfasdff 已提交
3779
    let kvStore;
A
asfasdff 已提交
3780 3781
    try {
        const func = function (data) {
A
asfasdff 已提交
3782
            console.log('syncComplete ' + data)
A
asfasdff 已提交
3783
        };
A
asfasdff 已提交
3784 3785
        kvStore.on('syncComplete', func);
        kvStore.off('syncComplete', func);
A
asfasdff 已提交
3786
    }catch(e) {
A
asfasdff 已提交
3787
        console.log('syncComplete e ' + e);
A
asfasdff 已提交
3788 3789 3790 3791
    }
    ```


3792
### sync
A
asfasdff 已提交
3793

A
asfasdff 已提交
3794
sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void
Z
zengyawen 已提交
3795

A
asfasdff 已提交
3796
在手动模式下,触发数据库同步,此方法为同步方法。
Z
zengyawen 已提交
3797

W
wufengshan 已提交
3798
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3799

A
asfasdff 已提交
3800 3801
-   参数:

3802 3803 3804 3805 3806
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIdList  |string[]  | 是    |同一组网环境下,需要同步的设备的deviceId列表。    |
| mode  |[SyncMode](#syncmode)   | 是   |同步类型。    |
| allowedDelayMs  |number   | 否   |可选参数,允许延时时间,单位:ms(毫秒)。   |
A
asfasdff 已提交
3807 3808 3809 3810

-   示例:

    ```
A
asfasdff 已提交
3811 3812
    let kvStore;
    kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000);
A
asfasdff 已提交
3813 3814
    ```

A
asfasdff 已提交
3815
### setSyncParam<sup>8+</sup> ###
A
asfasdff 已提交
3816

3817
setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3818

A
asfasdff 已提交
3819
设置允许数据库同步的默认延迟,并通过callback方式返回,此方法为异步方法。
A
asfasdff 已提交
3820

W
wufengshan 已提交
3821
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3822

A
asfasdff 已提交
3823 3824
-   参数:

3825 3826 3827 3828 3829
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |
| callback  |AsyncCallback&lt;void&gt;  | 是   |回调函数。   |

A
asfasdff 已提交
3830 3831 3832 3833

-   示例

    ```
A
asfasdff 已提交
3834
    let kvStore;
A
asfasdff 已提交
3835 3836 3837 3838 3839 3840
    try {
        const defaultAllowedDelayMs = 500;
        kvStore.setSyncParam(defaultAllowedDelayMs, function (err,data) {
            console.log('SetSyncParam put success');
        });
    }catch(e) {
A
asfasdff 已提交
3841
        console.log('testSingleKvStoreSetSyncParam e ' + e);
A
asfasdff 已提交
3842 3843 3844 3845
    }
    ```


A
asfasdff 已提交
3846
### setSyncParam<sup>8+</sup> ###
A
asfasdff 已提交
3847

3848
setSyncParam(defaultAllowedDelayMs: number): Promise&lt;void&gt;
A
asfasdff 已提交
3849

A
asfasdff 已提交
3850
设置允许数据库同步的默认延迟,并通过Promise方式返回,此方法为异步方法。
A
asfasdff 已提交
3851

W
wufengshan 已提交
3852
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3853

A
asfasdff 已提交
3854 3855
-   参数:

3856 3857 3858 3859
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| defaultAllowedDelayMs  |number  | 是    |表示数据库同步允许的默认延迟,以毫秒为单位。    |

A
asfasdff 已提交
3860 3861 3862

-   返回值:

3863 3864 3865
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3866 3867 3868 3869

-   示例

    ```
A
asfasdff 已提交
3870
    let kvStore;
A
asfasdff 已提交
3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883
    try {
        const defaultAllowedDelayMs = 500;
        kvStore.setSyncParam(defaultAllowedDelayMs).then((err) => {
            console.log('SetSyncParam put success');
        }).catch((err) => {
            console.log('SetSyncParam put fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('SetSyncParam e ' + e);
    }
    ```


A
asfasdff 已提交
3884
### getSecurityLevel<sup>8+</sup> ###
A
asfasdff 已提交
3885

3886
getSecurityLevel(callback: AsyncCallback&lt;SecurityLevel&gt;): void
A
asfasdff 已提交
3887 3888 3889

获取数据库的安全级别,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
3890
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3891

A
asfasdff 已提交
3892 3893
-   参数:

3894 3895 3896
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| callback  |AsyncCallback&lt;[SecurityLevel](#securitylevel)&gt;  | 是    |回调函数。    |
A
asfasdff 已提交
3897 3898 3899 3900

-   示例

    ```
A
asfasdff 已提交
3901
    let kvStore;
A
asfasdff 已提交
3902 3903 3904 3905 3906 3907 3908 3909 3910 3911
    try {
        kvStore.getSecurityLevel(function (err,data) {
            console.log('getSecurityLevel success');
        });
    }catch(e) {
        console.log('GetSecurityLeve e ' + e);
    }
    ```


A
asfasdff 已提交
3912
### getSecurityLevel<sup>8+</sup> ###
A
asfasdff 已提交
3913

3914
getSecurityLevel(): Promise&lt;SecurityLevel&gt;
A
asfasdff 已提交
3915 3916 3917

获取数据库的安全级别,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
3918
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
3919

A
asfasdff 已提交
3920 3921
-   返回值:

3922 3923 3924 3925
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[SecurityLevel](#securitylevel)&gt; |Promise实例,用于获取异步返回结果。|

A
asfasdff 已提交
3926 3927 3928 3929

-   示例

    ```
A
asfasdff 已提交
3930
    let kvStore;
A
asfasdff 已提交
3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942
    try {
        kvStore.getSecurityLevel().then((data) => {
            console.log(' getSecurityLevel success');
        }).catch((err) => {
            console.log('getSecurityLevel fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('GetSecurityLeve e ' + e);
    }
    ```


A
asfasdff 已提交
3943
## DeviceKVStore<sup>8+</sup> ##
A
asfasdff 已提交
3944

A
asfasdff 已提交
3945
在分布式系统中按设备管理分布式数据,继承自KvStore,提供查询数据和同步数据的方法。在调用DeviceKVStore的方法前,需要先通过getKVStore构建一个DeviceKVStore实例。
A
asfasdff 已提交
3946

W
wufengshan 已提交
3947
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
3948

A
asfasdff 已提交
3949
### get<sup>8+</sup> ###
A
asfasdff 已提交
3950

3951
get(deviceId: string, key: string, callback: AsyncCallback&lt;boolean|string|number|Uint8Array&gt;): void
A
asfasdff 已提交
3952

A
asfasdff 已提交
3953
获取与指定设备 ID 和 key 匹配的 String 值,并通过callback方式返回,此方法为异步方法。
A
asfasdff 已提交
3954

W
wufengshan 已提交
3955
**系统能力**:  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
3956

A
asfasdff 已提交
3957 3958
-   参数:

3959 3960 3961 3962 3963 3964
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| key       |string  | 是    |表示要查询 key 值的键。    |
| callback  |AsyncCallback&lt;boolean/string/number/Uint8Array&gt;  | 是    |回调函数,返回匹配给定条件的字符串值。    |

A
asfasdff 已提交
3965 3966 3967 3968

-   示例

    ```
A
asfasdff 已提交
3969
    let kvStore;
A
asfasdff 已提交
3970 3971 3972 3973 3974
    const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
    const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
    try{
        kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
            console.log('put success');
A
asfasdff 已提交
3975
            kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, function (err,data) {
A
asfasdff 已提交
3976 3977 3978 3979 3980 3981 3982 3983 3984
                console.log('get success');
            });
        })
    }catch(e) {
        console.log('get e' + e);
    }
    ```


A
asfasdff 已提交
3985
### get<sup>8+</sup> ###
A
asfasdff 已提交
3986

3987
get(deviceId: string, key: string): Promise&lt;boolean|string|number|Uint8Array&gt;
A
asfasdff 已提交
3988

A
asfasdff 已提交
3989
获取与指定设备 ID 和 key 匹配的 String 值,并通过Promise方式返回,此方法为异步方法。
A
asfasdff 已提交
3990

W
wufengshan 已提交
3991
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
3992

A
asfasdff 已提交
3993 3994
-   参数:

3995 3996 3997 3998
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| key       |string  | 是    |表示要查询 key 值的键。    |
A
asfasdff 已提交
3999 4000 4001

-   返回值:

4002 4003 4004
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;boolean/string/number/Uint8Array&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4005 4006 4007 4008

-   示例

    ```
A
asfasdff 已提交
4009
    let kvStore;
A
asfasdff 已提交
4010 4011 4012 4013 4014
    const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
    const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
    try {
        kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(async (data) => {
            console.log(' put success');
A
asfasdff 已提交
4015
            kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
A
asfasdff 已提交
4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028
                console.log('get success');
            }).catch((err) => {
                console.log('get fail ' + JSON.stringify(err));
            });
        }).catch((error) => {
            console.log('put error' + error);
        });
    } catch (e) {
        console.log('Get e ' + e);
    }
    ```


A
asfasdff 已提交
4029
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4030

4031
getEntries(deviceId: string, keyPrefix: string, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4032

A
asfasdff 已提交
4033
获取与指定设备 ID 和 key 前缀匹配的所有键值对,并通过callback方式返回,此方法为异步方法。
A
asfasdff 已提交
4034

W
wufengshan 已提交
4035
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4036

A
asfasdff 已提交
4037 4038
-   参数:

4039 4040 4041 4042 4043
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
| callback  |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是  |回调函数,返回满足给定条件的所有键值对的列表。    |
A
asfasdff 已提交
4044 4045 4046 4047

-   示例

    ```
A
asfasdff 已提交
4048
    let kvStore;
A
asfasdff 已提交
4049 4050 4051 4052 4053 4054 4055
    try {
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
4056
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
4057 4058 4059 4060 4061 4062 4063 4064
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        console.log('entries: ' + entries);
        kvStore.putBatch(entries, async function (err,data) {
            console.log('putBatch success');
A
asfasdff 已提交
4065
            await kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err,entrys) {
A
asfasdff 已提交
4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076
                console.log('getEntries success');
                console.log('entrys.length: ' + entrys.length);
                console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
            });
        });
    }catch(e) {
        console.log('PutBatch e ' + e);
    }
    ```


A
asfasdff 已提交
4077
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4078

4079
getEntries(deviceId: string, keyPrefix: string): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4080

A
asfasdff 已提交
4081
获取与指定设备 ID 和 key 前缀匹配的所有键值对,并通过Promise方式返回,此方法为异步方法。
A
asfasdff 已提交
4082

W
wufengshan 已提交
4083
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4084

A
asfasdff 已提交
4085 4086
-   参数:

4087 4088 4089 4090
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4091 4092 4093

-   返回值:

4094 4095 4096
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4097 4098 4099 4100

-   示例

    ```
A
asfasdff 已提交
4101
    let kvStore;
A
asfasdff 已提交
4102 4103 4104 4105 4106 4107 4108
    try {
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
4109
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
4110 4111 4112 4113 4114 4115
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        console.log('entries: ' + entries);
A
asfasdff 已提交
4116
        kvStore.putBatch(entries).then(async (err) => {
A
asfasdff 已提交
4117
            console.log('putBatch success');
A
asfasdff 已提交
4118
            await kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entrys) => {
A
asfasdff 已提交
4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135
                console.log('getEntries success');
                console.log('entrys.length: ' + entrys.length);
                console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
                console.log('entrys[0].value: ' + JSON.stringify(entrys[0].value));
                console.log('entrys[0].value.value: ' + entrys[0].value.value);
            }).catch((err) => {
                console.log('getEntries fail ' + JSON.stringify(err));
            });
        }).catch((err) => {
            console.log('putBatch fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('PutBatch e ' + e);
    }
    ```


A
asfasdff 已提交
4136
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4137

4138
getEntries(query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4139 4140 4141

获取与指定 Query 对象匹配的键值对列表,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
4142
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4143

A
asfasdff 已提交
4144 4145
-   参数:

4146 4147
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4148
| query  |[Query](#query8)  | 是    |表示查询对象。    |
4149
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数,返回与指定 Query 对象匹配的键值对列表。    |
A
asfasdff 已提交
4150 4151 4152 4153

-   示例

    ```
A
asfasdff 已提交
4154
    let kvStore;
A
asfasdff 已提交
4155 4156 4157 4158 4159 4160 4161 4162
    try {
        var arr = new Uint8Array([21,31]);
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_bool_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
4163
                    type : distributedData.ValueType.BYTE_ARRAY,
A
asfasdff 已提交
4164 4165 4166 4167 4168
                    value : arr
                }
            }
            entries.push(entry);
        }
A
asfasdff 已提交
4169
        console.log('entries: ' + JSON.stringify(entries));
A
asfasdff 已提交
4170 4171
        kvStore.putBatch(entries, async function (err,data) {
            console.log('putBatch success');
A
asfasdff 已提交
4172 4173 4174 4175 4176
            expect(err == undefined).assertTrue();
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            query.deviceId('localDeviceId');
            await kvStore.getEntries(query, function (err,entrys) {
A
asfasdff 已提交
4177 4178
                console.log('getEntries success');
                console.log('entrys.length: ' + entrys.length);
A
asfasdff 已提交
4179
                console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
A
asfasdff 已提交
4180 4181
            });
        });
A
asfasdff 已提交
4182
        console.log('GetEntries success');
A
asfasdff 已提交
4183
    }catch(e) {
A
asfasdff 已提交
4184
        console.log('GetEntries e ' + e);
A
asfasdff 已提交
4185 4186 4187 4188
    }
    ```


A
asfasdff 已提交
4189
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4190

4191
getEntries(query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4192 4193 4194

获取与指定 Query 对象匹配的键值对列表,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
4195
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4196

A
asfasdff 已提交
4197 4198
-   参数:

4199 4200
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4201
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4202 4203 4204

-   返回值:

4205 4206 4207
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4208 4209 4210 4211

-   示例

    ```
A
asfasdff 已提交
4212
    let kvStore;
A
asfasdff 已提交
4213 4214 4215 4216 4217 4218 4219 4220
    try {
        var arr = new Uint8Array([21,31]);
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_bool_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
4221
                    type : distributedData.ValueType.BYTE_ARRAY,
A
asfasdff 已提交
4222 4223 4224 4225 4226
                    value : arr
                }
            }
            entries.push(entry);
        }
A
asfasdff 已提交
4227
        console.log('entries: ' + JSON.stringify(entries));
A
asfasdff 已提交
4228 4229
        kvStore.putBatch(entries).then(async (err) => {
            console.log('putBatch success');
A
asfasdff 已提交
4230 4231 4232
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            await kvStore.getEntries(query).then((entrys) => {
A
asfasdff 已提交
4233 4234 4235 4236 4237
                console.log('getEntries success');
            }).catch((err) => {
                console.log('getEntries fail ' + JSON.stringify(err));
            });
        }).catch((err) => {
A
asfasdff 已提交
4238
            console.log('GetEntries putBatch fail ' + JSON.stringify(err))
A
asfasdff 已提交
4239
        });
A
asfasdff 已提交
4240
        console.log('GetEntries success');
A
asfasdff 已提交
4241
    }catch(e) {
A
asfasdff 已提交
4242
        console.log('GetEntries e ' + e);
A
asfasdff 已提交
4243 4244 4245 4246
    }
    ```


A
asfasdff 已提交
4247
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4248

4249
getEntries(deviceId: string, query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4250 4251 4252

获取与指定设备 ID 和 Query 对象匹配的键值对列表,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
4253
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4254

A
asfasdff 已提交
4255 4256
-   参数:

4257 4258 4259
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4260
| query  |[Query](#query8)  | 是    |表示查询对象。    |
4261
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数,返回与指定 Query 对象匹配的键值对列表。    |
A
asfasdff 已提交
4262 4263 4264 4265

-   示例

    ```
A
asfasdff 已提交
4266
    let kvStore;
A
asfasdff 已提交
4267 4268 4269 4270 4271 4272 4273 4274
    try {
        var arr = new Uint8Array([21,31]);
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_bool_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
4275
                    type : distributedData.ValueType.BYTE_ARRAY,
A
asfasdff 已提交
4276 4277 4278 4279 4280
                    value : arr
                }
            }
            entries.push(entry);
        }
A
asfasdff 已提交
4281
        console.log('entries: ' + JSON.stringify(entries));
A
asfasdff 已提交
4282 4283
        kvStore.putBatch(entries, async function (err,data) {
            console.log('putBatch success');
A
asfasdff 已提交
4284 4285 4286 4287 4288
            expect(err == undefined).assertTrue();
            var query = new distributedData.Query();
            query.deviceId('localDeviceId');
            query.prefixKey("batch_test");
            await kvStore.getEntries('localDeviceId', query, function (err,entrys) {
A
asfasdff 已提交
4289 4290
                console.log('getEntries success');
                console.log('entrys.length: ' + entrys.length);
A
asfasdff 已提交
4291 4292
                console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
            })
A
asfasdff 已提交
4293
        });
A
asfasdff 已提交
4294
        console.log('GetEntries success');
A
asfasdff 已提交
4295
    }catch(e) {
A
asfasdff 已提交
4296
        console.log('GetEntries e ' + e);
A
asfasdff 已提交
4297 4298 4299 4300
    }
    ```


A
asfasdff 已提交
4301
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4302

4303
getEntries(deviceId: string, query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4304 4305 4306

获取与指定设备 ID 和 Query 对象匹配的键值对列表,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
4307
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4308

A
asfasdff 已提交
4309 4310
-   参数:

4311 4312 4313
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4314
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4315 4316 4317

-   返回值:

4318 4319 4320
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4321 4322 4323 4324

-   示例

    ```
A
asfasdff 已提交
4325
    let kvStore;
A
asfasdff 已提交
4326 4327 4328 4329 4330 4331 4332 4333
    try {
        var arr = new Uint8Array([21,31]);
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_bool_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
4334
                    type : distributedData.ValueType.BYTE_ARRAY,
A
asfasdff 已提交
4335 4336 4337 4338 4339
                    value : arr
                }
            }
            entries.push(entry);
        }
A
asfasdff 已提交
4340
        console.log('entries: ' + JSON.stringify(entries));
A
asfasdff 已提交
4341 4342
        kvStore.putBatch(entries).then(async (err) => {
            console.log('putBatch success');
A
asfasdff 已提交
4343 4344 4345 4346
            var query = new distributedData.Query();
            query.deviceId('localDeviceId');
            query.prefixKey("batch_test");
            await kvStore.getEntries('localDeviceId', query).then((entrys) => {
A
asfasdff 已提交
4347 4348 4349 4350 4351 4352 4353
                console.log('getEntries success');
            }).catch((err) => {
                console.log('getEntries fail ' + JSON.stringify(err));
            });
        }).catch((err) => {
            console.log('putBatch fail ' + JSON.stringify(err));
        });
A
asfasdff 已提交
4354
        console.log('GetEntries success');
A
asfasdff 已提交
4355
    }catch(e) {
A
asfasdff 已提交
4356
        console.log('GetEntries e ' + e);
A
asfasdff 已提交
4357 4358 4359 4360
    }
    ```


A
asfasdff 已提交
4361
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4362

4363
getResultSet(deviceId: string, keyPrefix: string, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4364

A
asfasdff 已提交
4365
获取与指定设备 ID 和 key 前缀匹配的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。
A
asfasdff 已提交
4366

W
wufengshan 已提交
4367
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4368

A
asfasdff 已提交
4369 4370
-   参数:

4371 4372 4373 4374
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
Z
zengyawen 已提交
4375
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数,返回 KvStoreResultSet 对象。    |
A
asfasdff 已提交
4376 4377 4378 4379

-   示例

    ```
A
asfasdff 已提交
4380
    let kvStore;
A
asfasdff 已提交
4381 4382
    try {
        let resultSet;
A
asfasdff 已提交
4383
        kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
A
asfasdff 已提交
4384 4385
            console.log('getResultSet success');
            resultSet = result;
A
asfasdff 已提交
4386
            await kvStore.closeResultSet(resultSet, function (err, data) {
A
asfasdff 已提交
4387 4388 4389 4390 4391 4392 4393 4394 4395
                console.log('closeResultSet success');
            })
        });
    }catch(e) {
        console.log('GetResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
4396
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4397

4398
getResultSet(deviceId: string, keyPrefix: string): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4399

A
asfasdff 已提交
4400
获取与指定设备 ID 和 key 前缀匹配的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。
A
asfasdff 已提交
4401

W
wufengshan 已提交
4402
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4403

A
asfasdff 已提交
4404 4405
-   参数:

4406 4407 4408 4409
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4410 4411 4412

-   返回值:

4413 4414
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
4415
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4416 4417 4418 4419

-   示例

    ```
A
asfasdff 已提交
4420
    let kvStore;
A
asfasdff 已提交
4421 4422
    try {
        let resultSet;
A
asfasdff 已提交
4423
        kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
A
asfasdff 已提交
4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439
            console.log('getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('getResultSet fail ' + JSON.stringify(err));
        });
        kvStore.closeResultSet(resultSet).then((err) => {
            console.log('closeResultSet success');
        }).catch((err) => {
            console.log('closeResultSet fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('GetResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
4440
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4441

4442
getResultSet(query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4443 4444 4445

获取与指定 Query 对象匹配的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
4446
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4447

A
asfasdff 已提交
4448 4449
-   参数:

4450 4451
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4452 4453
| query  |[Query](#query8)  | 是    |表示查询对象。    |
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数,返回与指定 Query 对象匹配的 KvStoreResultSet 对象。    |
A
asfasdff 已提交
4454 4455 4456 4457

-   示例

    ```
A
asfasdff 已提交
4458
    let kvStore;
A
asfasdff 已提交
4459 4460
    try {
        let resultSet;
A
asfasdff 已提交
4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries, async function (err, data) {
            console.log('putBatch success');
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            query.deviceId('localDeviceId');
            await kvStore.getResultSet(query, async function (err, result) {
                console.log('getResultSet success');
                resultSet = result;
                await kvStore.closeResultSet(resultSet, function (err, data) {
                    console.log('closeResultSet success');
                })
            });
A
asfasdff 已提交
4485
        });
A
asfasdff 已提交
4486
    } catch(e) {
A
asfasdff 已提交
4487 4488 4489 4490 4491
        console.log('GetResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
4492
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4493

4494
getResultSet(query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4495 4496 4497

获取与指定 Query 对象匹配的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
4498
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4499

A
asfasdff 已提交
4500 4501
-   参数:

4502 4503
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4504
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4505 4506 4507

-   返回值:

4508 4509
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
4510
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4511 4512 4513 4514

-   示例

    ```
A
asfasdff 已提交
4515
    let kvStore;
A
asfasdff 已提交
4516 4517 4518 4519 4520 4521 4522 4523
    try {
        let resultSet;
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
4524
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
4525 4526 4527 4528 4529 4530
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries).then(async (err) => {
A
asfasdff 已提交
4531
            console.log('putBatch success');
A
asfasdff 已提交
4532
        }).catch((err) => {
A
asfasdff 已提交
4533
            console.log('putBatch fail ' + err);
A
asfasdff 已提交
4534
        });
A
asfasdff 已提交
4535
        const query = new distributedData.Query();
A
asfasdff 已提交
4536
        query.deviceId('localDeviceId');
A
asfasdff 已提交
4537 4538 4539
        query.prefixKey("batch_test");
        console.log("GetResultSet " + query.getSqlLike());
        kvStore.getResultSet(query).then((result) => {
A
asfasdff 已提交
4540
            console.log('getResultSet success');
A
asfasdff 已提交
4541 4542
            resultSet = result;
        }).catch((err) => {
A
asfasdff 已提交
4543
            console.log('getResultSet fail ' + JSON.stringify(err));
A
asfasdff 已提交
4544 4545
        });
        kvStore.closeResultSet(resultSet).then((err) => {
A
asfasdff 已提交
4546
            console.log('closeResultSet success');
A
asfasdff 已提交
4547
        }).catch((err) => {
A
asfasdff 已提交
4548
            console.log('closeResultSet fail ' + JSON.stringify(err));
A
asfasdff 已提交
4549 4550 4551 4552 4553 4554 4555
        });
    }catch(e) {
        console.log('GetResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
4556
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4557

4558
getResultSet(deviceId: string, query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4559 4560 4561

获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
4562
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4563

A
asfasdff 已提交
4564 4565
-   参数:

4566 4567 4568
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4569 4570
| query  |[Query](#query8)  | 是    |表示查询对象。    |
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数,返回与指定 Query 对象匹配的 KvStoreResultSet 对象。    |
A
asfasdff 已提交
4571 4572 4573 4574

-   示例

    ```
A
asfasdff 已提交
4575
    let kvStore;
A
asfasdff 已提交
4576 4577
    try {
        let resultSet;
A
asfasdff 已提交
4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries, async function (err, data) {
            console.log('putBatch success');
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            await kvStore.getResultSet('localDeviceId', query, async function (err, result) {
                console.log('getResultSet success');
                resultSet = result;
                await kvStore.closeResultSet(resultSet, function (err, data) {
                    console.log('closeResultSet success');
                })
            });
A
asfasdff 已提交
4601
        });
A
asfasdff 已提交
4602
    } catch(e) {
A
asfasdff 已提交
4603 4604 4605 4606 4607
        console.log('GetResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
4608
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4609

4610
getResultSet(deviceId: string, query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4611 4612 4613

获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
4614
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4615

A
asfasdff 已提交
4616 4617
-   参数:

4618 4619 4620
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4621
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4622 4623 4624

-   返回值:

4625 4626
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
4627
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4628 4629 4630 4631

-   示例

    ```
A
asfasdff 已提交
4632
    let kvStore;
A
asfasdff 已提交
4633 4634 4635 4636 4637 4638 4639 4640
    try {
        let resultSet;
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
A
asfasdff 已提交
4641
                    type : distributedData.ValueType.STRING,
A
asfasdff 已提交
4642 4643 4644 4645 4646 4647 4648 4649 4650 4651
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries).then(async (err) => {
            console.log('GetResultSet putBatch success');
        }).catch((err) => {
            console.log('PutBatch putBatch fail ' + JSON.stringify(err));
        });
A
asfasdff 已提交
4652
        const query = new distributedData.Query();
A
asfasdff 已提交
4653 4654
        query.prefixKey("batch_test");
        kvStore.getResultSet('localDeviceId', query).then((result) => {
A
asfasdff 已提交
4655 4656 4657 4658 4659
            console.log('GetResultSet getResultSet success');
            resultSet = result;
        }).catch((err) => {
            console.log('GetResultSet getResultSet fail ' + JSON.stringify(err));
        });
A
asfasdff 已提交
4660
        query.deviceId('localDeviceId');
A
asfasdff 已提交
4661 4662 4663 4664 4665 4666
        console.log("GetResultSet " + query.getSqlLike());
        kvStore.closeResultSet(resultSet).then((err) => {
            console.log('GetResultSet closeResultSet success');
        }).catch((err) => {
            console.log('GetResultSet closeResultSet fail ' + JSON.stringify(err));
        });
4667
    
A
asfasdff 已提交
4668 4669 4670 4671 4672 4673
    }catch(e) {
        console.log('GetResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
4674
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4675

4676
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4677 4678 4679

关闭由 getResultSet 返回的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
4680
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4681

A
asfasdff 已提交
4682 4683
-   参数:

4684 4685
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4686
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的 KvStoreResultSet 对象。   |
4687
| callback   |AsyncCallback&lt;void&gt;                 | 是    |回调函数。    |
A
asfasdff 已提交
4688 4689 4690 4691

-   示例

    ```
A
asfasdff 已提交
4692
    let kvStore;
A
asfasdff 已提交
4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708
    try {
        console.log('CloseResultSet success');
        let resultSet = null;
        kvStore.closeResultSet(resultSet, function (err, data) {
            if (err == undefined) {
                console.log('closeResultSet success');
            } else {
                console.log('closeResultSet fail');
            }
        });
    }catch(e) {
        console.log('CloseResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
4709
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4710

4711
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
4712 4713 4714

关闭由 getResultSet 返回的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
4715
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4716

A
asfasdff 已提交
4717 4718
-   参数:

4719 4720
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4721
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的 KvStoreResultSet 对象。   |
A
asfasdff 已提交
4722 4723 4724

-   返回值:

4725 4726 4727
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4728 4729 4730 4731

-   示例

    ```
A
asfasdff 已提交
4732
    let kvStore;
A
asfasdff 已提交
4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746
    try {
        console.log('CloseResultSet success');
        let resultSet = null;
        kvStore.closeResultSet(resultSet).then(() => {
            console.log('closeResultSet success');
        }).catch((err) => {
            console.log('closeResultSet fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('CloseResultSet e ' + e);
    }
    ```


A
asfasdff 已提交
4747
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4748

4749
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
4750 4751 4752

获取与指定 Query 对象匹配的结果数,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
4753
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4754

A
asfasdff 已提交
4755 4756
-   参数:

4757 4758
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4759
| query     |[Query](#query8)       | 是    |表示查询对象。    |
4760
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数,返回与指定 Query 对象匹配的结果数。    |
A
asfasdff 已提交
4761 4762 4763 4764

-   示例

    ```
A
asfasdff 已提交
4765
    let kvStore;
A
asfasdff 已提交
4766
    try {
A
asfasdff 已提交
4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries, async function (err, data) {
            console.log('putBatch success');
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            query.deviceId('localDeviceId');
            await kvStore.getResultSize(query, async function (err, resultSize) {
                console.log('getResultSet success');
            });
        });
    } catch(e) {
A
asfasdff 已提交
4789 4790 4791 4792 4793
        console.log('GetResultSize e ' + e);
    }
    ```


A
asfasdff 已提交
4794
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4795

4796
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4797 4798 4799

获取与指定 Query 对象匹配的结果数,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
4800
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4801

A
asfasdff 已提交
4802 4803
-   参数:

4804 4805
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4806
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
4807 4808 4809

-   返回值:

4810 4811 4812
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;number&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4813 4814 4815 4816

-   示例

    ```
A
asfasdff 已提交
4817
    let kvStore;
A
asfasdff 已提交
4818
    try {
A
asfasdff 已提交
4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries).then(async (err) => {
            console.log('putBatch success');
        }).catch((err) => {
            console.log('putBatch fail ' + JSON.stringify(err));
        });
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.getResultSize(query).then((resultSize) => {
            console.log('getResultSet success');
        }).catch((err) => {
            console.log('getResultSet fail ' + JSON.stringify(err));
        });
A
asfasdff 已提交
4844 4845 4846 4847 4848 4849
    }catch(e) {
        console.log('GetResultSize e ' + e);
    }
    ```


A
asfasdff 已提交
4850
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4851

A
asfasdff 已提交
4852
getResultSize(deviceId: string, query: Query, callback: AsyncCallback&lt;number&gt;): void;
A
asfasdff 已提交
4853 4854 4855

获取与指定设备 ID 和 Query 对象匹配的结果数,并通过callback方式返回,此方法为异步方法。

W
wufengshan 已提交
4856
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4857

A
asfasdff 已提交
4858 4859
-   参数:

4860 4861 4862
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4863
| query     |[Query](#query8)       | 是    |表示查询对象。    |
4864
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数,返回与指定 Query 对象匹配的结果数。    |
A
asfasdff 已提交
4865 4866 4867 4868

-   示例

    ```
A
asfasdff 已提交
4869
    let kvStore;
A
asfasdff 已提交
4870
    try {
A
asfasdff 已提交
4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries, async function (err, data) {
            console.log('putBatch success');
            const query = new distributedData.Query();
            query.prefixKey("batch_test");
            await kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
                console.log('getResultSet success');
            });
        });
    } catch(e) {
A
asfasdff 已提交
4892 4893 4894 4895 4896
        console.log('GetResultSize e ' + e);
    }
    ```


A
asfasdff 已提交
4897
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4898

4899
getResultSize(deviceId: string, query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4900 4901 4902

获取与指定设备 ID 和 Query 对象匹配的结果数,并通过Promise方式返回,此方法为异步方法。

W
wufengshan 已提交
4903
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4904

A
asfasdff 已提交
4905 4906
-   参数:

4907 4908 4909
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4910
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
4911 4912 4913

-   返回值:

4914 4915 4916
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;number&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4917 4918 4919 4920

-   示例

    ```
A
asfasdff 已提交
4921
    let kvStore;
A
asfasdff 已提交
4922
    try {
A
asfasdff 已提交
4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946
        let entries = [];
        for (var i = 0; i < 10; i++) {
            var key = 'batch_test_string_key';
            var entry = {
                key : key + i,
                value : {
                    type : distributedData.ValueType.STRING,
                    value : 'batch_test_string_value'
                }
            }
            entries.push(entry);
        }
        kvStore.putBatch(entries).then(async (err) => {
            console.log('putBatch success');
        }).catch((err) => {
            console.log('putBatch fail ' + JSON.stringify(err));
        });
        var query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSize('localDeviceId', query).then((resultSize) => {
            console.log('getResultSet success');
        }).catch((err) => {
            console.log('getResultSet fail ' + JSON.stringify(err));
        });
A
asfasdff 已提交
4947 4948 4949 4950 4951 4952
    }catch(e) {
        console.log('GetResultSize e ' + e);
    }
    ```


A
asfasdff 已提交
4953
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
4954

4955
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4956 4957 4958

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

W
wufengshan 已提交
4959
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
4960

A
asfasdff 已提交
4961 4962
-   参数:

4963 4964 4965 4966
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |标识要删除其数据的设备。  |
| callback  |AsyncCallback&lt;void&gt;    | 是    |回调函数。    |
A
asfasdff 已提交
4967 4968 4969 4970

-   示例

    ```
A
asfasdff 已提交
4971
    let kvStore;
A
asfasdff 已提交
4972 4973 4974 4975 4976 4977
    const KEY_TEST_STRING_ELEMENT = 'key_test_string';
    const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
    try {
        kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
            console.log('RemoveDeviceData  put success');
            const deviceid = 'no_exist_device_id';
A
asfasdff 已提交
4978
            await kvStore.removeDeviceData(deviceid, async function (err,data) {
A
asfasdff 已提交
4979 4980 4981
                if (err == undefined) {
                    console.log('removeDeviceData success');
                } else {
A
asfasdff 已提交
4982 4983
                    console.log('removeDeviceData fail');
                    await kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) {
A
asfasdff 已提交
4984 4985 4986 4987 4988 4989
                        console.log('RemoveDeviceData get success');
                    });
                }
            });
        });
    }catch(e) {
A
asfasdff 已提交
4990
        console.log('RemoveDeviceData e ' + e);
A
asfasdff 已提交
4991 4992 4993 4994
    }
    ```


A
asfasdff 已提交
4995
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
4996

4997
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
4998 4999 5000

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

W
wufengshan 已提交
5001
**系统能力**: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
5002

A
asfasdff 已提交
5003 5004
-   参数:

5005 5006 5007
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要删除其数据的设备。  |
A
asfasdff 已提交
5008 5009 5010

-   返回值:

5011 5012 5013
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
5014 5015 5016 5017

-   示例

    ```
A
asfasdff 已提交
5018
    let kvStore;
A
asfasdff 已提交
5019 5020 5021 5022 5023 5024 5025 5026 5027 5028
    const KEY_TEST_STRING_ELEMENT = 'key_test_string';
    const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
    try {
        kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((err) => {
            console.log('RemoveDeviceData put success');
        }).catch((err) => {
            console.log('RemoveDeviceData put fail ' + JSON.stringify(err));
        });
        const deviceid = 'no_exist_device_id';
        kvStore.removeDeviceData(deviceid).then((err) => {
A
asfasdff 已提交
5029
            console.log('removeDeviceData success');
A
asfasdff 已提交
5030
        }).catch((err) => {
A
asfasdff 已提交
5031
            console.log('removeDeviceData fail ' + JSON.stringify(err));
A
asfasdff 已提交
5032
        });
A
asfasdff 已提交
5033
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
A
asfasdff 已提交
5034 5035 5036 5037 5038 5039 5040 5041 5042 5043
            console.log('RemoveDeviceData get success data:' + data);
        }).catch((err) => {
            console.log('RemoveDeviceData get fail ' + JSON.stringify(err));
        });
    }catch(e) {
        console.log('RemoveDeviceData e ' + e);
    }
    ```


A
asfasdff 已提交
5044
### sync<sup>8+</sup> ###
A
asfasdff 已提交
5045

5046
sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void
A
asfasdff 已提交
5047

A
asfasdff 已提交
5048
在手动模式下,触发数据库同步,此方法为同步方法。
A
asfasdff 已提交
5049

W
wufengshan 已提交
5050
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
5051

A
asfasdff 已提交
5052 5053
-   参数:

5054 5055 5056 5057 5058 5059
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIdList    |string[]               | 是    |需要同步DeviceKvStore数据库的设备ID列表。 |
| mode            |[SyncMode](#syncmode)  | 是    |表示同步方式,PUSH、PULL或PUSH_PULL。  |
| allowedDelayMs  |number                 | 否    |可选参数,允许延时时间,单位:ms(毫秒)。  |

A
asfasdff 已提交
5060 5061 5062 5063

-   示例

    ```
A
asfasdff 已提交
5064
    let kvStore;
A
asfasdff 已提交
5065 5066 5067 5068 5069 5070 5071 5072
    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');
A
asfasdff 已提交
5073 5074
            const devices = ['deviceList'];
            const mode = distributedData.SyncMode.PULL_ONLY;
A
asfasdff 已提交
5075 5076 5077 5078 5079 5080 5081
            kvStore.sync(devices, mode);
        });
    }catch(e) {
        console.log('Sync e' + e);
    }
    ```

A
asfasdff 已提交
5082
### on<sup>8+</sup> ###
A
asfasdff 已提交
5083

5084
on(event: 'syncComplete', syncCallback: Callback&lt;Arrary&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
5085

A
asfasdff 已提交
5086
订阅同步完成事件回调通知,该方法为同步方法。
A
asfasdff 已提交
5087

W
wufengshan 已提交
5088
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
5089

A
asfasdff 已提交
5090 5091
-   参数:

5092 5093 5094 5095
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| event    |'syncComplete'      | 是    |同步完成时触发的事件名。 |
| syncCallback            |Callback<Arrary&lt;<[string, number]&gt; | 是    |用于向调用方发送同步结果的回调。  |
A
asfasdff 已提交
5096 5097 5098 5099 5100 5101

-   示例
    ```
    const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
    const VALUE_TEST_FLOAT_ELEMENT = 321.12;
    try {
A
asfasdff 已提交
5102 5103
        kvStore.on('syncComplete', function (data) {
            console.log('syncComplete ' + data)
A
asfasdff 已提交
5104 5105
        });
        kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
A
asfasdff 已提交
5106
            console.log('syncComplete put success');
A
asfasdff 已提交
5107
        }).catch((error) => {
A
asfasdff 已提交
5108
            console.log('syncComplete put fail ' + error);
A
asfasdff 已提交
5109 5110
        });
    }catch(e) {
A
asfasdff 已提交
5111
        console.log('syncComplete put e ' + e);
A
asfasdff 已提交
5112 5113 5114 5115
    }
    ```


A
asfasdff 已提交
5116
### off<sup>8+</sup> ###
A
asfasdff 已提交
5117

5118
off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void
A
asfasdff 已提交
5119

A
asfasdff 已提交
5120
取消订阅同步完成事件回调通知,该方法为同步方法。
A
asfasdff 已提交
5121

W
wufengshan 已提交
5122
**系统能力**: SystemCapability.DistributedDataManager.KVStore.Core。
5123

A
asfasdff 已提交
5124 5125
-   参数:

5126 5127 5128
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| event         |'syncComplete'                           | 是    |同步完成时触发的事件名。 |
5129
| syncCallback  |Callback<Arrary&lt;[string, number]&gt;&gt; | 否    |用于向调用方发送同步结果的回调。  |
5130

A
asfasdff 已提交
5131 5132 5133 5134

-   示例

    ```
A
asfasdff 已提交
5135
    let kvStore;
A
asfasdff 已提交
5136 5137
    try {
        const func = function (data) {
A
asfasdff 已提交
5138
            console.log('syncComplete ' + data)
A
asfasdff 已提交
5139
        };
A
asfasdff 已提交
5140 5141
        kvStore.on('syncComplete', func);
        kvStore.off('syncComplete', func);
A
asfasdff 已提交
5142
    }catch(e) {
A
asfasdff 已提交
5143
        console.log('syncComplete e ' + e);
A
asfasdff 已提交
5144 5145 5146 5147
    }
    ```


5148
## SyncMode
Z
zengyawen 已提交
5149 5150 5151

用于指定同步模式。

5152 5153
**系统能力**:以下各项对应的系统能力均为 SystemCapability.DistributedDataManager.KVStore.Core。

5154 5155 5156 5157 5158
| 名称       | 默认值     | 说明                    |
| -----      | ------    | ----------------------- |
| PULL_ONLY  |0          |表示只能从远端拉取数据到本端。 |
| PUSH_ONLY  |1          |表示只能从本端推送数据到对端。 |
| PUSH_PULL  |2          |表示从本端推送数据到远端,然后从远端拉取数据到本端。 |