js-apis-distributed-data.md 146.8 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

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


14
## distributedData.createKVManager
Z
zengyawen 已提交
15

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

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

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

Z
zengyawen 已提交
22
**参数**
23 24 25 26 27

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

Z
zengyawen 已提交
29
**示例**
G
ge-yafang 已提交
30 31 32 33 34 35 36 37
```
let kvManager;
try {
    const kvManagerConfig = {
        bundleName : 'com.example.datamanagertest',
        userInfo : {
            userId : '0',
            userType : distributedData.UserType.SAME_USER_ID
A
asfasdff 已提交
38 39
        }
    }
G
ge-yafang 已提交
40 41 42 43 44 45 46 47 48 49 50 51
    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);
}
```
A
asfasdff 已提交
52

53
## distributedData.createKVManager
A
asfasdff 已提交
54

A
asfasdff 已提交
55
createKVManager(config: KVManagerConfig): Promise<KVManager>
Z
zengyawen 已提交
56 57 58

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

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

Z
zengyawen 已提交
61
**参数**
Z
zengyawen 已提交
62

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

Z
zengyawen 已提交
67
**返回值**
A
asfasdff 已提交
68

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

Z
zengyawen 已提交
73
**示例**
A
asfasdff 已提交
74

G
ge-yafang 已提交
75 76 77 78 79 80 81 82
```
let kvManager;
try {
    const kvManagerConfig = {
        bundleName : 'com.example.datamanagertest',
        userInfo : {
            userId : '0',
            userType : distributedData.UserType.SAME_USER_ID
A
asfasdff 已提交
83 84
        }
    }
G
ge-yafang 已提交
85 86 87 88 89 90 91 92 93 94
    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);
}
```
A
asfasdff 已提交
95

96
## KVManagerConfig
Z
zengyawen 已提交
97 98 99

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

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

102 103 104 105 106 107
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userInfo | [UserInfo](#userinfo) | 是  | 调用方的用户信息。 |
| bundleName | string | 是  | 调用方的包名。 |

## UserInfo
Z
zengyawen 已提交
108 109 110

用户信息。

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

113 114 115 116 117 118 119
| 名称 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userId | string | 是  | 指示要设置的用户ID。 |
| userType | [UserType](#usertype) | 是  | 指示要设置的用户类型。 |


## UserType
Z
zengyawen 已提交
120 121 122

用户类型。

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

125 126 127 128 129 130
| 名称 | 默认值 | 说明 |
| ----- | ------ | ------ |
| SAME_USER_ID | 0 | 使用同一帐户登录不同设备的用户。 |


## KVManager
Z
zengyawen 已提交
131 132 133

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

134
### getKVStore
Z
zengyawen 已提交
135

136
getKVStore<T extends KVStore>(storeId: string, options: Options, callback: AsyncCallback<T>): void
Z
zengyawen 已提交
137 138 139

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

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

Z
zengyawen 已提交
142
**参数**
A
asfasdff 已提交
143

144 145 146 147 148
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| storeId | string | 是  | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| options | [Options](#options) | 是  | 创建KVStore实例的配置信息。 |
| callback | AsyncCallback<T><T extends KVStore> | 是  | 创建KVStore实例的回调,返回KVStore对象实例。 |
A
asfasdff 已提交
149

Z
zengyawen 已提交
150
**示例**
A
asfasdff 已提交
151

G
ge-yafang 已提交
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
```
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, 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);
}
```
A
asfasdff 已提交
176 177


178
### getKVStore
A
asfasdff 已提交
179

A
asfasdff 已提交
180
getKVStore<T extends KVStore>(storeId: string, options: Options): Promise<T>
Z
zengyawen 已提交
181 182 183

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

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

Z
zengyawen 已提交
186
**参数**
A
asfasdff 已提交
187

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


Z
zengyawen 已提交
194
**返回值**
A
asfasdff 已提交
195

196 197 198 199
| 类型                                    | 说明        |
| -------------------------------------- | ------------------------ |
| Promise<T> <T extends KVStore> | 指定的Promise回调方法,返回创建的KVStore数据库实例。 |

Z
zengyawen 已提交
200
**示例**
201

G
ge-yafang 已提交
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
```
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 已提交
224

A
asfasdff 已提交
225
### closeKVStore<sup>8+</sup> ###
A
asfasdff 已提交
226

227
closeKVStore(appId: string, storeId: string, kvStore: KVStore, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
228 229 230

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

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

Z
zengyawen 已提交
233
**参数**
234 235 236 237 238 239 240 241


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

Z
zengyawen 已提交
243
**示例**
A
asfasdff 已提交
244

G
ge-yafang 已提交
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
```
let kvStore;
let kvManager;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
 }
 try {
    kvManager.getKVStore('storeId', options, async function (err, store) {
    console.log('getKVStore success');
    kvStore = store;
    await kvManager.closeKVStore('appId', 'storeId', kvStore, function (err, data) {
        console.log('closeKVStore success');
    });
    });
} catch (e) {
    console.log('closeKVStore e ' + e);
}
```

A
asfasdff 已提交
270

A
asfasdff 已提交
271
### closeKVStore<sup>8+</sup> ###
A
asfasdff 已提交
272

273
closeKVStore(appId: string, storeId: string, kvStore: KVStore): Promise&lt;void&gt;
A
asfasdff 已提交
274 275 276

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

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

Z
zengyawen 已提交
279
**参数**
A
asfasdff 已提交
280

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

Z
zengyawen 已提交
287
**返回值**
A
asfasdff 已提交
288

289 290 291
| 类型          | 说明            |
| ------------- | -------------- |
| Promise<void> | Promise实例,如果数据库关闭成功则返回true,否则返回false。 |
A
asfasdff 已提交
292

Z
zengyawen 已提交
293
**示例**
A
asfasdff 已提交
294

G
ge-yafang 已提交
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
```
let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
 try {
    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));
    });
    }).catch((err) => {
        console.log('CloseKVStore getKVStore err ' + JSON.stringify(err));
    });
 } catch (e) {
    console.log('closeKVStore e ' + e);
}  
```
A
asfasdff 已提交
323 324


A
asfasdff 已提交
325
### deleteKVStore<sup>8+</sup> ###
A
asfasdff 已提交
326

327
deleteKVStore(appId: string, storeId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
328 329 330

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

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

Z
zengyawen 已提交
333
**参数**
A
asfasdff 已提交
334

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

Z
zengyawen 已提交
341
**示例**
A
asfasdff 已提交
342

G
ge-yafang 已提交
343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
```
let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
try {
    kvManager.getKVStore('store', options, async function (err, store) {
        console.log('getKVStore success');
        kvStore = store;
        await kvManager.deleteKVStore('appId', 'storeId', function (err, data) {
            console.log('deleteKVStore success');
A
asfasdff 已提交
361
        });
G
ge-yafang 已提交
362 363 364 365 366
    });
} catch (e) {
    console.log('DeleteKVStore e ' + e);
}
```
A
asfasdff 已提交
367

A
asfasdff 已提交
368
### deleteKVStore<sup>8+</sup> ###
A
asfasdff 已提交
369

370
deleteKVStore(appId: string, storeId: string): Promise&lt;void&gt;
A
asfasdff 已提交
371 372 373

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

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

Z
zengyawen 已提交
376
**参数**
Z
zengyawen 已提交
377

378 379 380 381
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。     |
| storeId | string | 是   | 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
A
asfasdff 已提交
382 383


Z
zengyawen 已提交
384
**返回值**
A
asfasdff 已提交
385

386 387 388
| 类型          | 说明            |
| ------------- | -------------- |
| Promise&lt;void&gt; | Promise实例,如果成功返回true,否则返回false。 |
A
asfasdff 已提交
389

Z
zengyawen 已提交
390
**示例**
A
asfasdff 已提交
391

G
ge-yafang 已提交
392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
```
let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
try {
    kvManager.getKVStore('storId', options).then(async (store) => {
        console.log('getKVStore success');
        kvStore = store;
        await kvManager.deleteKVStore('appId', 'storeId').then(() => {
            console.log('deleteKVStore success');
A
asfasdff 已提交
410
        }).catch((err) => {
G
ge-yafang 已提交
411
            console.log('deleteKVStore err ' + JSON.stringify(err));
A
asfasdff 已提交
412
        });
G
ge-yafang 已提交
413 414 415 416 417 418 419
    }).catch((err) => {
        console.log('getKVStore err ' + JSON.stringify(err));
    });
} catch (e) {
    console.log('deleteKVStore e ' + e);
}
```
A
asfasdff 已提交
420 421


A
asfasdff 已提交
422
### getAllKVStoreId<sup>8+</sup> ###
A
asfasdff 已提交
423

424
getAllKVStoreId(appId: string, callback: AsyncCallback&lt;string[]&gt;): void
A
asfasdff 已提交
425 426 427

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

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

Z
zengyawen 已提交
430
**参数**
A
asfasdff 已提交
431

432 433 434 435
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
| callback | AsyncCallback&lt;void&gt; | 是   |回调函数,返回所有创建的 KvStore 数据库的 storeId。 |
A
asfasdff 已提交
436

Z
zengyawen 已提交
437
**示例**
A
asfasdff 已提交
438

G
ge-yafang 已提交
439 440 441 442 443 444 445 446 447 448 449
```
let kvManager;
try {
    kvManager.getAllKVStoreId('appId', function (err, data) {
        console.log('GetAllKVStoreId success');
        console.log('GetAllKVStoreId size = ' + data.length);
    });
} catch (e) {
    console.log('GetAllKVStoreId e ' + e);
}
```
A
asfasdff 已提交
450 451


A
asfasdff 已提交
452
### getAllKVStoreId<sup>8+</sup> ###
A
asfasdff 已提交
453

454
getAllKVStoreId(appId: string): Promise&lt;string[]&gt;
A
asfasdff 已提交
455 456 457

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

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

Z
zengyawen 已提交
460
**参数**
A
asfasdff 已提交
461

462 463 464
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
A
asfasdff 已提交
465 466


Z
zengyawen 已提交
467
**返回值**
Z
zengyawen 已提交
468

469 470 471
| 类型          | 说明            |
| ------------- | -------------- |
| Promise&lt;string[]&gt;| Promise实例,返回所有创建的 KvStore 数据库的 storeId。 |
A
asfasdff 已提交
472

Z
zengyawen 已提交
473
**示例**
A
asfasdff 已提交
474

G
ge-yafang 已提交
475 476 477 478 479 480 481 482 483 484 485 486 487 488
```
let kvManager;
try {
    console.log('GetAllKVStoreId');
    kvManager.getAllKVStoreId('apppId').then((data) => {
        console.log('getAllKVStoreId success');
        console.log('size = ' + data.length);
    }).catch((err) => {
        console.log('getAllKVStoreId err ' + JSON.stringify(err));
    });
} catch(e) {
    console.log('getAllKVStoreId e ' + e);
}
```
A
asfasdff 已提交
489 490


A
asfasdff 已提交
491
### on<sup>8+</sup> ###
A
asfasdff 已提交
492

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

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

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

Z
zengyawen 已提交
499
**参数**
A
asfasdff 已提交
500

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

Z
zengyawen 已提交
506
**示例**
A
asfasdff 已提交
507

G
ge-yafang 已提交
508 509 510 511 512 513 514
```
let kvManager;
try {
    
    console.log('KVManagerOn');
    const deathCallback = function () {
        console.log('death callback call');
A
asfasdff 已提交
515
    }
G
ge-yafang 已提交
516 517 518 519 520
    kvManager.on('distributedDataServiceDie', deathCallback);
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
521 522


A
asfasdff 已提交
523
### off<sup>8+</sup> ###
A
asfasdff 已提交
524

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

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

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

Z
zengyawen 已提交
531
**参数**
A
asfasdff 已提交
532

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

A
asfasdff 已提交
538

Z
zengyawen 已提交
539
**示例**
A
asfasdff 已提交
540

G
ge-yafang 已提交
541 542 543 544 545 546
```
let kvManager;
try {
    console.log('KVManagerOff');
    const deathCallback = function () {
        console.log('death callback call');
A
asfasdff 已提交
547
    }
G
ge-yafang 已提交
548 549 550 551
    kvManager.off('distributedDataServiceDie', deathCallback);
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
552
    
G
ge-yafang 已提交
553
```
A
asfasdff 已提交
554

555
## Options
Z
zengyawen 已提交
556 557 558

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

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

561 562 563 564 565
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| createIfMissing  | boolean | 否 | 当数据库文件不存在时是否创建数据库,默认创建。     |
| encrypt  | boolean | 否 |设置数据库文件是否加密,默认不加密。     |
| backup  | boolean | 否 |设置数据库文件是否备份,默认备份。     |
Z
zuojiangjiang 已提交
566
| autoSync  | boolean | 否 |设置数据库文件是否自动同步,默认不自动同步。**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。     |
567 568
| kvStoreType | [KVStoreType](#kvstoretype) | 否 |设置要创建的数据库类型,默认为多设备协同数据库。 |
| securityLevel | [SecurityLevel](#securitylevel) | 否 |设置数据库安全级别,默认不设置安全级别。  |
Z
zengyawen 已提交
569
| schema<sup>8+</sup> | [Schema](#schema8) | 否 | 设置定义存储在数据库中的值。 |
570 571 572


## KVStoreType
Z
zengyawen 已提交
573 574 575

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

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

578 579 580 581 582 583 584 585
| 名称  | 默认值 | 说明                    |
| ---   | ----  | ----------------------- |
| DEVICE_COLLABORATION  | 0 | 表示多设备协同数据库。   |
| SINGLE_VERSION  | 1 | 表示单版本数据库。  |
| MULTI_VERSION   | 2 | 表示多版本数据库。此类型当前不允许使用。  |


## SecurityLevel
Z
zengyawen 已提交
586 587 588

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

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

591 592 593 594 595 596 597 598 599 600 601
| 名称  | 默认值 | 说明                    |
| ---   | ----  | ----------------------- |
| NO_LEVEL  | 0 | 表示数据库不设置安全级别。   |
| S0  | 1 | 表示数据库的安全级别为公共级别安全。  |
| S1  | 2 | 表示数据库的安全级别为低级别安全,当数据泄露时会产生较低影响。  |
| S2  | 3 | 表示数据库的安全级别为中级别安全,当数据泄露时会产生较大影响。  |
| S3  | 5 | 表示数据库的安全级别为高级别安全,当数据泄露时会产生重大影响。  |
| S4  | 6 | 表示数据库的安全级别为关键级别安全,当数据泄露时会产生严重影响。  |


## Constants
Z
zengyawen 已提交
602 603 604

KVStore常量。

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

607 608 609 610 611 612 613 614
| 名称  | 默认值 | 说明                    |
| ---   | ----  | ----------------------- |
| 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 已提交
615

A
asfasdff 已提交
616
## Schema<sup>8+</sup> ##
A
asfasdff 已提交
617

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

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

W
wufengshan 已提交
622
| 名称  | 类型 | 说明                    |
623
| ---   | ----  | ----------------------- |
Z
zengyawen 已提交
624
| root<sup>8+</sup>  | [FieldNode](#fieldnode8) | 表示json根对象  |
G
ge-yafang 已提交
625
| indexes<sup>8+</sup>  | Array\<string> | 表示json类型的字符串数组。  |
W
wufengshan 已提交
626 627
| mode<sup>8+</sup>  | number | 表示Schema的模式。  |
| skip<sup>8+</sup>  | number |  Schema的跳跃大小。  |
628 629 630 631 632 633 634

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

constructor()

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

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

637
## FieldNode<sup>8+</sup> ##
A
asfasdff 已提交
638 639 640

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

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

W
wufengshan 已提交
643
| 名称  | 类型 | 说明                    |
644
| ---   | ----  | ----------------------- |
W
wufengshan 已提交
645
| nullable<sup>8+</sup>  | boolean | 表示数据库字段是否可以为空。   |
Z
zengyawen 已提交
646
| default<sup>8+</sup>  | string | 表示Fieldnode的默认值。 |
W
wufengshan 已提交
647
| type<sup>8+</sup>  | number | 表示值。 |
648 649 650 651 652 653 654

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

constructor(name: string)

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

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

Z
zengyawen 已提交
657
**参数**
658

Z
zengyawen 已提交
659 660 661
| 参数名 | 参数类型 | 必填 | 说明            |
| ------ | -------- | ---- | --------------- |
| name   | string   | 是   | FieldNode的值。 |
662

A
asfasdff 已提交
663
### appendChild<sup>8+</sup> ###
A
asfasdff 已提交
664

665
appendChild(child: FieldNode): boolean
A
asfasdff 已提交
666 667 668

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

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

Z
zengyawen 已提交
671
**参数**
A
asfasdff 已提交
672

673 674
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
675
| child  | [FieldNode](#fieldnode8) | 是    | 要附加的域节点。   |
Z
zengyawen 已提交
676

A
asfasdff 已提交
677

Z
zengyawen 已提交
678
**返回值**
A
asfasdff 已提交
679

680 681 682
| 类型          | 说明            |
| ------------- | -------------- |
| boolean |如果子节点成功添加到这个FieldNode,则返回 true;否则返回 false。 |
A
asfasdff 已提交
683

Z
zengyawen 已提交
684
**示例**
A
asfasdff 已提交
685

G
ge-yafang 已提交
686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704
```
import ddm from '@ohos.data.distributedData';
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);
}
```
A
asfasdff 已提交
705 706


707
## KvStoreResultSet<sup>8+</sup> ##
A
asfasdff 已提交
708

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

711

A
asfasdff 已提交
712
### getCount<sup>8+</sup> ###
A
asfasdff 已提交
713

714
getCount(): number
A
asfasdff 已提交
715 716 717

获取结果集中的行数。

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

Z
zengyawen 已提交
720
**返回值**
A
asfasdff 已提交
721

722 723 724
| 类型   | 说明               |
| ------ | --------------    |
| number |返回行数。          |
A
asfasdff 已提交
725

Z
zengyawen 已提交
726
**示例**
A
asfasdff 已提交
727

G
ge-yafang 已提交
728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const count = resultSet.getCount();
    console.log("GetCount " + count);
} catch (e) {
    console.log("GetCount fail " + e);
}
```
A
asfasdff 已提交
744

A
asfasdff 已提交
745
### getPosition<sup>8+</sup> ###
A
asfasdff 已提交
746

747
getPosition(): number
A
asfasdff 已提交
748 749 750

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

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

Z
zengyawen 已提交
753
**返回值**
A
asfasdff 已提交
754

755 756 757
| 类型   | 说明               |
| ------ | --------------    |
| number |返回当前读取位置。   |
A
asfasdff 已提交
758

Z
zengyawen 已提交
759
**示例**
A
asfasdff 已提交
760

G
ge-yafang 已提交
761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const position = resultSet.getPosition();
    console.log("getPosition " + position);
} catch (e) {
    console.log("GetPosition fail " + e);
}
```
A
asfasdff 已提交
777 778


A
asfasdff 已提交
779
### moveToFirst<sup>8+</sup> ###
A
asfasdff 已提交
780

781
moveToFirst(): boolean
A
asfasdff 已提交
782 783 784

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

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

Z
zengyawen 已提交
787
**返回值**
A
asfasdff 已提交
788

789 790 791
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
792

Z
zengyawen 已提交
793
**示例**
A
asfasdff 已提交
794

G
ge-yafang 已提交
795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.moveToFirst();
    console.log("moveToFirst " + moved);
} catch (e) {
    console.log("MoveToFirst fail " + e);
}
```
A
asfasdff 已提交
811 812


A
asfasdff 已提交
813
### moveToLast<sup>8+</sup> ###
A
asfasdff 已提交
814

815
moveToLast(): boolean
A
asfasdff 已提交
816 817 818

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

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

Z
zengyawen 已提交
821
**返回值**
A
asfasdff 已提交
822

823 824 825
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
826

Z
zengyawen 已提交
827
**示例**
A
asfasdff 已提交
828

G
ge-yafang 已提交
829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.moveToLast();
    console.log("moveToLast " + moved);
} catch (e) {
    console.log("moveToLast fail " + e);
}
```
A
asfasdff 已提交
845 846


A
asfasdff 已提交
847
### moveToNext<sup>8+</sup> ###
A
asfasdff 已提交
848

849
moveToNext(): boolean
A
asfasdff 已提交
850 851 852

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

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

Z
zengyawen 已提交
855
**返回值**
A
asfasdff 已提交
856

857 858 859
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
860

Z
zengyawen 已提交
861
**示例**
A
asfasdff 已提交
862

G
ge-yafang 已提交
863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.moveToNext();
    console.log("moveToNext " + moved);
} catch (e) {
    console.log("moveToNext fail " + e);
}
```
A
asfasdff 已提交
879 880


A
asfasdff 已提交
881
### moveToPrevious<sup>8+</sup> ###
A
asfasdff 已提交
882

883
moveToPrevious(): boolean
A
asfasdff 已提交
884 885 886

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

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

Z
zengyawen 已提交
889
**返回值**
A
asfasdff 已提交
890

891 892 893
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
894

Z
zengyawen 已提交
895
**示例**
A
asfasdff 已提交
896

G
ge-yafang 已提交
897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.moveToPrevious();
    console.log("moveToPrevious " + moved);
} catch (e) {
    console.log("moveToPrevious fail " + e);
}
```
A
asfasdff 已提交
913 914


A
asfasdff 已提交
915
### move<sup>8+</sup> ###
A
asfasdff 已提交
916

917
move(offset: number): boolean
A
asfasdff 已提交
918 919 920

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

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

Z
zengyawen 已提交
923
**参数**
A
asfasdff 已提交
924

925 926 927
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| offset  | number  | 是    | 表示与当前位置的相对偏移量,负偏移表示向后移动,正偏移表示向前移动。   |
A
asfasdff 已提交
928

Z
zengyawen 已提交
929
**返回值**
A
asfasdff 已提交
930

931 932 933
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
934

Z
zengyawen 已提交
935
**示例**
A
asfasdff 已提交
936

G
ge-yafang 已提交
937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.move();
    console.log("move " + moved);
} catch (e) {
    console.log("move fail " + e);
}
```
A
asfasdff 已提交
953 954


A
asfasdff 已提交
955
### moveToPosition<sup>8+</sup> ###
A
asfasdff 已提交
956

957
moveToPosition(position: number): boolean
A
asfasdff 已提交
958 959 960

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

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

Z
zengyawen 已提交
963
**参数**
A
asfasdff 已提交
964

965 966 967
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| position  | number  | 是    |表示绝对位置。          |
A
asfasdff 已提交
968

Z
zengyawen 已提交
969
**返回值**
A
asfasdff 已提交
970

971 972 973
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果操作成功则返回true,否则返回 false。   |
A
asfasdff 已提交
974

Z
zengyawen 已提交
975
**示例**
A
asfasdff 已提交
976

G
ge-yafang 已提交
977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.moveToPosition();
    console.log("moveToPosition " + moved);
} catch (e) {
    console.log("moveToPosition fail " + e);
}
```
A
asfasdff 已提交
993 994


A
asfasdff 已提交
995
### isFirst<sup>8+</sup> ###
A
asfasdff 已提交
996

997
isFirst(): boolean
A
asfasdff 已提交
998 999 1000

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

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

Z
zengyawen 已提交
1003
**返回值**
A
asfasdff 已提交
1004

1005 1006 1007
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果读取位置是第一行,则返回 true;否则返回 false。   |
A
asfasdff 已提交
1008

Z
zengyawen 已提交
1009
**示例**
A
asfasdff 已提交
1010

G
ge-yafang 已提交
1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.isFirst();
    console.log("isFirst " + moved);
} catch (e) {
    console.log("isFirst fail " + e);
}
```
A
asfasdff 已提交
1027 1028


A
asfasdff 已提交
1029
### isLast<sup>8+</sup> ###
A
asfasdff 已提交
1030

1031
isLast(): boolean
A
asfasdff 已提交
1032 1033 1034

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

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

Z
zengyawen 已提交
1037
**返回值**
A
asfasdff 已提交
1038

1039 1040 1041
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果读取位置是最后一行,则返回 true;否则返回 false。   |
A
asfasdff 已提交
1042

Z
zengyawen 已提交
1043
**示例**
A
asfasdff 已提交
1044

G
ge-yafang 已提交
1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.isLast();
    console.log("isLast " + moved);
} catch (e) {
    console.log("isLast fail " + e);
}
```
A
asfasdff 已提交
1061

A
asfasdff 已提交
1062
### isBeforeFirst<sup>8+</sup> ###
A
asfasdff 已提交
1063

1064
isBeforeFirst(): boolean
A
asfasdff 已提交
1065 1066 1067

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

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

Z
zengyawen 已提交
1070
**返回值**
A
asfasdff 已提交
1071

1072 1073 1074
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果读取位置在第一行之前,则返回 true;否则返回 false。  |
A
asfasdff 已提交
1075

Z
zengyawen 已提交
1076
**示例**
A
asfasdff 已提交
1077

G
ge-yafang 已提交
1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.isBeforeFirst();
    console.log("isBeforeFirst " + moved);
} catch (e) {
    console.log("isBeforeFirst fail " + e);
}
```
A
asfasdff 已提交
1094 1095


A
asfasdff 已提交
1096
### isAfterLast<sup>8+</sup> ###
A
asfasdff 已提交
1097

1098
isAfterLast(): boolean
A
asfasdff 已提交
1099 1100 1101

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

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

Z
zengyawen 已提交
1104
**返回值**
A
asfasdff 已提交
1105

1106 1107 1108
| 类型    | 说明               |
| ------  | --------------    |
| boolean |如果读取位置在最后一行之后,则返回 true;否则返回 false。  |
A
asfasdff 已提交
1109

Z
zengyawen 已提交
1110
**示例**
A
asfasdff 已提交
1111

G
ge-yafang 已提交
1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.isAfterLast();
    console.log("isAfterLast " + moved);
} catch (e) {
    console.log("isAfterLast fail " + e);
}
```
A
asfasdff 已提交
1128 1129


A
asfasdff 已提交
1130
### getEntry<sup>8+</sup> ###
A
asfasdff 已提交
1131

1132
getEntry(): Entry
A
asfasdff 已提交
1133 1134 1135

获取键值对

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

Z
zengyawen 已提交
1138
**返回值**
A
asfasdff 已提交
1139

1140 1141 1142
| 类型    | 说明       |
| ------  | -------   |
| Entry   |返回键值对。|
A
asfasdff 已提交
1143

Z
zengyawen 已提交
1144
**示例**
A
asfasdff 已提交
1145

G
ge-yafang 已提交
1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
        console.log('getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + err);
    });
    const moved = resultSet.moveToNext();
    const entry  = resultSet.getEntry();
    console.log("getEntry " + JSON.stringify(entry));
} catch (e) {
    console.log("getEntry fail " + e);
}
```
A
asfasdff 已提交
1163 1164


1165
## Query<sup>8+</sup> ##
A
asfasdff 已提交
1166 1167 1168

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

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

1171 1172 1173 1174 1175 1176
### constructor<sup>8+</sup> ###

constructor() 

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

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

1179

A
asfasdff 已提交
1180
### reset<sup>8+</sup> ###
A
asfasdff 已提交
1181

1182
reset(): Query
A
asfasdff 已提交
1183 1184 1185

公共查询重置。

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


Z
zengyawen 已提交
1189
**返回值**
A
asfasdff 已提交
1190

1191 1192
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1193
| [Query](#query8) |返回重置的 Query 对象。|
A
asfasdff 已提交
1194

Z
zengyawen 已提交
1195
**示例**
A
asfasdff 已提交
1196

G
ge-yafang 已提交
1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208
```
try {
    let query = new distributedData.Query();
    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 已提交
1209 1210


A
asfasdff 已提交
1211
### equalTo<sup>8+</sup> ###
A
asfasdff 已提交
1212

A
asfasdff 已提交
1213
equalTo(field: string, value: number|string|boolean): Query;
A
asfasdff 已提交
1214 1215 1216

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

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

Z
zengyawen 已提交
1219
**参数**
A
asfasdff 已提交
1220

1221 1222 1223 1224
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| value  | number/string/boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1225

Z
zengyawen 已提交
1226
**返回值**
A
asfasdff 已提交
1227

1228 1229
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1230
| [Query](#query8) |返回重置的 Query 对象。|
A
asfasdff 已提交
1231

Z
zengyawen 已提交
1232
**示例**
A
asfasdff 已提交
1233

G
ge-yafang 已提交
1234 1235 1236 1237 1238 1239 1240 1241 1242 1243
```
try {
    let query = new distributedData.Query();
    query.equalTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1244 1245


A
asfasdff 已提交
1246
### notEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1247

1248
notEqualTo(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1249 1250 1251

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

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

Z
zengyawen 已提交
1254
**参数**
A
asfasdff 已提交
1255

1256 1257 1258 1259
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| value  | number/string/boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1260

Z
zengyawen 已提交
1261
**返回值**
A
asfasdff 已提交
1262

1263 1264
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1265
| [Query](#query8) |返回重置的 Query 对象。|
A
asfasdff 已提交
1266

Z
zengyawen 已提交
1267
**示例**
A
asfasdff 已提交
1268

G
ge-yafang 已提交
1269 1270 1271 1272 1273 1274 1275 1276 1277 1278
```
try {
    let query = new distributedData.Query();
    query.notEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1279 1280


A
asfasdff 已提交
1281
### greaterThan<sup>8+</sup> ###
A
asfasdff 已提交
1282

1283
greaterThan(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1284 1285 1286

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

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

Z
zengyawen 已提交
1289
**参数**
A
asfasdff 已提交
1290

1291 1292 1293
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
G
ge-yafang 已提交
1294
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1295

Z
zengyawen 已提交
1296
**返回值**
A
asfasdff 已提交
1297

1298 1299
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1300
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1301

Z
zengyawen 已提交
1302
**示例**
A
asfasdff 已提交
1303

G
ge-yafang 已提交
1304 1305 1306 1307 1308 1309 1310 1311 1312 1313
```
try {
    let query = new distributedData.Query();
    query.greaterThan("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1314 1315


A
asfasdff 已提交
1316
### lessThan<sup>8+</sup> ###
A
asfasdff 已提交
1317

1318
lessThan(field: string, value: number|string): Query
A
asfasdff 已提交
1319 1320 1321

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

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

Z
zengyawen 已提交
1324
**参数**
A
asfasdff 已提交
1325

1326 1327 1328
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
G
ge-yafang 已提交
1329
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1330

Z
zengyawen 已提交
1331
**返回值**
A
asfasdff 已提交
1332

1333 1334
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1335
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1336

Z
zengyawen 已提交
1337
**示例**
A
asfasdff 已提交
1338

G
ge-yafang 已提交
1339 1340 1341 1342 1343 1344 1345 1346 1347 1348
```
try {
    let query = new distributedData.Query();
    query.lessThan("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1349 1350


A
asfasdff 已提交
1351
### greaterThanOrEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1352

1353
greaterThanOrEqualTo(field: string, value: number|string): Query
A
asfasdff 已提交
1354 1355 1356

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

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

Z
zengyawen 已提交
1359
**参数**
A
asfasdff 已提交
1360

1361 1362 1363
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
G
ge-yafang 已提交
1364
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1365

Z
zengyawen 已提交
1366
**返回值**
A
asfasdff 已提交
1367

1368 1369
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1370
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1371

Z
zengyawen 已提交
1372
**示例**
A
asfasdff 已提交
1373

G
ge-yafang 已提交
1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384
```
try {
    let query = new distributedData.Query();
    query.greaterThanOrEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```

A
asfasdff 已提交
1385

A
asfasdff 已提交
1386
### lessThanOrEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1387

1388
lessThanOrEqualTo(field: string, value: number|string): Query
A
asfasdff 已提交
1389 1390 1391

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

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

Z
zengyawen 已提交
1394
**参数**
A
asfasdff 已提交
1395

1396 1397 1398
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
G
ge-yafang 已提交
1399
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1400

Z
zengyawen 已提交
1401
**返回值**
A
asfasdff 已提交
1402

1403 1404
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1405
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1406

Z
zengyawen 已提交
1407
**示例**
A
asfasdff 已提交
1408

G
ge-yafang 已提交
1409 1410 1411 1412 1413 1414 1415 1416 1417 1418
```
try {
    let query = new distributedData.Query();
    query.lessThanOrEqualTo("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1419 1420


A
asfasdff 已提交
1421
### isNull<sup>8+</sup> ###
A
asfasdff 已提交
1422

1423
isNull(field: string): Query
A
asfasdff 已提交
1424 1425 1426

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

1427

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

Z
zengyawen 已提交
1430
**参数**
A
asfasdff 已提交
1431

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

Z
zengyawen 已提交
1436
**返回值**
A
asfasdff 已提交
1437

1438 1439
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1440
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1441

Z
zengyawen 已提交
1442
**示例**
A
asfasdff 已提交
1443

G
ge-yafang 已提交
1444 1445 1446 1447 1448 1449 1450 1451 1452 1453
```
try {
    let query = new distributedData.Query();
    query.isNull("field");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1454 1455


A
asfasdff 已提交
1456
### inNumber<sup>8+</sup> ###
A
asfasdff 已提交
1457

1458
inNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1459 1460 1461

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

1462

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

Z
zengyawen 已提交
1465
**参数**
A
asfasdff 已提交
1466

1467 1468 1469 1470
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | number[]  | 是    | 表示指定的值列表。|
A
asfasdff 已提交
1471

Z
zengyawen 已提交
1472
**返回值**
A
asfasdff 已提交
1473

1474 1475
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1476
| [Query](#query8) |返回查询对象。|
1477

Z
zengyawen 已提交
1478
**示例**
A
asfasdff 已提交
1479

G
ge-yafang 已提交
1480 1481 1482 1483 1484 1485 1486 1487 1488 1489
```
try {
    let query = new distributedData.Query();
    query.inNumber("field", [0, 1]);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1490 1491


A
asfasdff 已提交
1492
### inString<sup>8+</sup> ###
A
asfasdff 已提交
1493

1494
inString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1495 1496 1497

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

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

Z
zengyawen 已提交
1500
**参数**
A
asfasdff 已提交
1501

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

Z
zengyawen 已提交
1507
**返回值**
A
asfasdff 已提交
1508

1509 1510
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1511
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1512

Z
zengyawen 已提交
1513
**示例**
A
asfasdff 已提交
1514

G
ge-yafang 已提交
1515 1516 1517 1518 1519 1520 1521 1522 1523 1524
```
try {
    let query = new distributedData.Query();
    query.inString("field", ['test1', 'test2']);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1525 1526


A
asfasdff 已提交
1527
### notInNumber<sup>8+</sup> ###
A
asfasdff 已提交
1528

1529
notInNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1530 1531 1532

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

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

Z
zengyawen 已提交
1535
**参数**
A
asfasdff 已提交
1536

1537 1538 1539 1540
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | number[]  | 是    | 表示指定的值列表。|
A
asfasdff 已提交
1541

Z
zengyawen 已提交
1542
**返回值**
A
asfasdff 已提交
1543

1544 1545
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1546
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1547

Z
zengyawen 已提交
1548
**示例**
A
asfasdff 已提交
1549

G
ge-yafang 已提交
1550 1551 1552 1553 1554 1555 1556 1557 1558 1559
```
try {
    let query = new distributedData.Query();
    query.notInNumber("field", [0, 1]);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1560 1561


A
asfasdff 已提交
1562
### notInString<sup>8+</sup> ###
A
asfasdff 已提交
1563

1564
notInString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1565 1566 1567

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

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

Z
zengyawen 已提交
1570
**参数**
A
asfasdff 已提交
1571

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

Z
zengyawen 已提交
1577
**返回值**
A
asfasdff 已提交
1578

1579 1580
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1581
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1582

Z
zengyawen 已提交
1583
**示例**
A
asfasdff 已提交
1584

G
ge-yafang 已提交
1585 1586 1587 1588 1589 1590 1591 1592 1593 1594
```
try {
    let query = new distributedData.Query();
    query.notInString("field", ['test1', 'test2']);
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1595 1596


A
asfasdff 已提交
1597
### like<sup>8+</sup> ###
A
asfasdff 已提交
1598

1599
like(field: string, value: string): Query
A
asfasdff 已提交
1600 1601 1602

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

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

Z
zengyawen 已提交
1605
**参数**
A
asfasdff 已提交
1606

1607 1608 1609 1610
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | string  | 是    | 表示指定的字符串值。|
A
asfasdff 已提交
1611

Z
zengyawen 已提交
1612
**返回值**
A
asfasdff 已提交
1613

1614 1615
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1616
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1617

Z
zengyawen 已提交
1618
**示例**
A
asfasdff 已提交
1619

G
ge-yafang 已提交
1620 1621 1622 1623 1624 1625 1626 1627 1628 1629
```
try {
    let query = new distributedData.Query();
    query.like("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1630 1631


A
asfasdff 已提交
1632
### unlike<sup>8+</sup> ###
A
asfasdff 已提交
1633

1634
unlike(field: string, value: string): Query
A
asfasdff 已提交
1635 1636 1637

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

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

Z
zengyawen 已提交
1640
**参数**
A
asfasdff 已提交
1641

1642 1643 1644 1645
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段,必须以$开头, 并且不能包含' ^ '。  |
| valueList  | string  | 是    | 表示指定的字符串值。|
A
asfasdff 已提交
1646

Z
zengyawen 已提交
1647
**返回值**
A
asfasdff 已提交
1648

1649 1650
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1651
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1652

Z
zengyawen 已提交
1653
**示例**
A
asfasdff 已提交
1654

G
ge-yafang 已提交
1655 1656 1657 1658 1659 1660 1661 1662 1663 1664
```
try {
    let query = new distributedData.Query();
    query.unlike("field", "value");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1665 1666


A
asfasdff 已提交
1667
### and<sup>8+</sup> ###
A
asfasdff 已提交
1668

1669
and(): Query
A
asfasdff 已提交
1670 1671 1672

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

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

Z
zengyawen 已提交
1675
**返回值**
A
asfasdff 已提交
1676

1677 1678
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1679
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1680

Z
zengyawen 已提交
1681
**示例**
A
asfasdff 已提交
1682

G
ge-yafang 已提交
1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694
```
try {
    let query = new distributedData.Query();
    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 已提交
1695 1696


A
asfasdff 已提交
1697
### or<sup>8+</sup> ###
A
asfasdff 已提交
1698

1699
or(): Query
A
asfasdff 已提交
1700 1701 1702

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

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

Z
zengyawen 已提交
1705
**返回值**
A
asfasdff 已提交
1706

1707 1708
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1709
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1710

Z
zengyawen 已提交
1711
**示例**
A
asfasdff 已提交
1712

G
ge-yafang 已提交
1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724
```
try {
    let query = new distributedData.Query();
    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 已提交
1725 1726


A
asfasdff 已提交
1727
### orderByAsc<sup>8+</sup> ###
A
asfasdff 已提交
1728

1729
orderByAsc(field: string): Query
A
asfasdff 已提交
1730 1731 1732

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

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

Z
zengyawen 已提交
1735
**参数**
A
asfasdff 已提交
1736

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

Z
zengyawen 已提交
1741
**返回值**
A
asfasdff 已提交
1742

1743 1744
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1745
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1746

Z
zengyawen 已提交
1747
**示例**
A
asfasdff 已提交
1748

G
ge-yafang 已提交
1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759
```
try {
    let query = new distributedData.Query();
    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 已提交
1760 1761


A
asfasdff 已提交
1762
### orderByDesc<sup>8+</sup> ###
A
asfasdff 已提交
1763

1764
orderByDesc(field: string): Query
A
asfasdff 已提交
1765 1766 1767

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

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

Z
zengyawen 已提交
1770
**参数**
A
asfasdff 已提交
1771

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

Z
zengyawen 已提交
1776
**返回值**
A
asfasdff 已提交
1777

1778 1779
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1780
| [Query](#query8) |返回查询对象。|
1781

Z
zengyawen 已提交
1782
**示例**
A
asfasdff 已提交
1783

G
ge-yafang 已提交
1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794
```
try {
    let query = new distributedData.Query();
    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 已提交
1795 1796


A
asfasdff 已提交
1797
### limit<sup>8+</sup> ###
A
asfasdff 已提交
1798

1799
limit(total: number, offset: number): Query
A
asfasdff 已提交
1800 1801 1802

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

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

Z
zengyawen 已提交
1805
**参数**
A
asfasdff 已提交
1806

1807 1808 1809 1810
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| total  | number  | 是    |表示指定的结果数。  |
| offset | number  | 是    |表示起始位置。  |
A
asfasdff 已提交
1811

Z
zengyawen 已提交
1812
**返回值**
A
asfasdff 已提交
1813

1814 1815
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1816
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1817

Z
zengyawen 已提交
1818
**示例**
A
asfasdff 已提交
1819

G
ge-yafang 已提交
1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830
```
try {
    let query = new distributedData.Query();
    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 已提交
1831 1832


A
asfasdff 已提交
1833
### isNotNull<sup>8+</sup> ###
A
asfasdff 已提交
1834

1835
isNotNull(field: string): Query
A
asfasdff 已提交
1836 1837 1838

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

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

Z
zengyawen 已提交
1841
**参数**
A
asfasdff 已提交
1842

1843 1844 1845
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| fieId  | string  | 是    |表示指定字段。      |
A
asfasdff 已提交
1846

Z
zengyawen 已提交
1847
**返回值**
A
asfasdff 已提交
1848

1849 1850
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1851
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1852

Z
zengyawen 已提交
1853
**示例**
A
asfasdff 已提交
1854

G
ge-yafang 已提交
1855 1856 1857 1858 1859 1860 1861 1862 1863 1864
```
try {
    let query = new distributedData.Query();
    query.isNotNull("field");
    console.log("query is " + query.getSqlLike());
    query = null;
} catch (e) {
    console.log("dumplicated calls should be ok :" + e);
}
```
A
asfasdff 已提交
1865 1866


A
asfasdff 已提交
1867
### beginGroup<sup>8+</sup> ###
A
asfasdff 已提交
1868

1869
beginGroup(): Query
A
asfasdff 已提交
1870 1871 1872

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

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

Z
zengyawen 已提交
1875
**返回值**
A
asfasdff 已提交
1876

1877 1878
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1879
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1880

Z
zengyawen 已提交
1881
**示例**
A
asfasdff 已提交
1882

G
ge-yafang 已提交
1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894
```
try {
    let query = new distributedData.Query();
    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 已提交
1895 1896


A
asfasdff 已提交
1897
### endGroup<sup>8+</sup> ###
A
asfasdff 已提交
1898

1899
endGroup(): Query
A
asfasdff 已提交
1900 1901 1902

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

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

Z
zengyawen 已提交
1905
**返回值**
A
asfasdff 已提交
1906

1907 1908
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1909
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1910

Z
zengyawen 已提交
1911
**示例**
A
asfasdff 已提交
1912

G
ge-yafang 已提交
1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924
```
try {
    let query = new distributedData.Query();
    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 已提交
1925 1926


A
asfasdff 已提交
1927
### prefixKey<sup>8+</sup> ###
A
asfasdff 已提交
1928

1929
prefixKey(prefix: string): Query
A
asfasdff 已提交
1930 1931 1932

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

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

Z
zengyawen 已提交
1935
**参数**
A
asfasdff 已提交
1936

1937 1938 1939
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| prefix | string  | 是    |表示指定的键前缀。     |
A
asfasdff 已提交
1940

Z
zengyawen 已提交
1941
**返回值**
A
asfasdff 已提交
1942

1943 1944
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1945
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1946

Z
zengyawen 已提交
1947
**示例**
A
asfasdff 已提交
1948

G
ge-yafang 已提交
1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959
```
try {
    let query = new distributedData.Query();
    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 已提交
1960 1961


A
asfasdff 已提交
1962
### setSuggestIndex<sup>8+</sup> ###
A
asfasdff 已提交
1963

1964
setSuggestIndex(index: string): Query
A
asfasdff 已提交
1965 1966 1967

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

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

Z
zengyawen 已提交
1970
**参数**
A
asfasdff 已提交
1971

1972 1973 1974
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| index  | string  | 是    |指示要设置的索引。   |
A
asfasdff 已提交
1975

Z
zengyawen 已提交
1976
**返回值**
A
asfasdff 已提交
1977

1978 1979
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1980
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1981

Z
zengyawen 已提交
1982
**示例**
A
asfasdff 已提交
1983

G
ge-yafang 已提交
1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994
```
try {
    let query = new distributedData.Query();
    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
asfasdff 已提交
1995 1996


A
fix up  
asfasdff 已提交
1997 1998
### deviceId<sup>8+</sup> ###

1999
deviceId(deviceId:string):Query
A
fix up  
asfasdff 已提交
2000 2001 2002

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

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

Z
zengyawen 已提交
2005
**参数**
A
fix up  
asfasdff 已提交
2006

2007 2008 2009 2010
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| deviceId | string  | 是    |指示查询的设备 ID。   |

A
fix up  
asfasdff 已提交
2011

Z
zengyawen 已提交
2012
**返回值**
A
fix up  
asfasdff 已提交
2013

2014 2015
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
2016
| [Query](#query8) |返回查询对象。|
A
fix up  
asfasdff 已提交
2017

Z
zengyawen 已提交
2018
**示例**
A
fix up  
asfasdff 已提交
2019

G
ge-yafang 已提交
2020 2021 2022 2023 2024 2025 2026 2027 2028
```
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);
}
```
A
fix up  
asfasdff 已提交
2029 2030 2031 2032


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

2033
getSqlLike():string
A
fix up  
asfasdff 已提交
2034 2035 2036

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

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

Z
zengyawen 已提交
2039
**返回值**
A
fix up  
asfasdff 已提交
2040

2041 2042
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
2043
| [Query](#query8) |返回查询对象。|
A
fix up  
asfasdff 已提交
2044

Z
zengyawen 已提交
2045
**示例**
A
fix up  
asfasdff 已提交
2046

G
ge-yafang 已提交
2047 2048 2049 2050 2051 2052 2053 2054 2055
```
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);
}
```
A
fix up  
asfasdff 已提交
2056 2057


2058
## KVStore
Z
zengyawen 已提交
2059 2060 2061

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

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

2064
### put
Z
zengyawen 已提交
2065

A
asfasdff 已提交
2066
put(key: string, value: Uint8Array | string | number | boolean, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
2067 2068 2069

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

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

Z
zengyawen 已提交
2072
**参数**
A
asfasdff 已提交
2073

2074 2075 2076
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
Z
zengyawen 已提交
2077
| value  | Uint8Array \| string \| number \| boolean | 是    |要添加数据的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的长度不大于[MAX_VALUE_LENGTH](#constants)。   |
Z
zengyawen 已提交
2078
| callback | AsyncCallback&lt;void> | 是    |回调函数。   |
A
asfasdff 已提交
2079

Z
zengyawen 已提交
2080
**示例**
A
asfasdff 已提交
2081

G
ge-yafang 已提交
2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097
```
let kvStore;
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);
}
```
A
asfasdff 已提交
2098 2099


2100
### put
A
asfasdff 已提交
2101

A
asfasdff 已提交
2102
put(key: string, value: Uint8Array | string | number | boolean): Promise&lt;void&gt;
Z
zengyawen 已提交
2103 2104 2105

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

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

Z
zengyawen 已提交
2108
**参数**
A
asfasdff 已提交
2109

2110 2111 2112
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    | string  | 是    |要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。   |
Z
zengyawen 已提交
2113
| value  | Uint8Array \| string \| number \| boolean | 是    |要添加数据的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的长度不大于[MAX_VALUE_LENGTH](#constants)。   |
A
asfasdff 已提交
2114

Z
zengyawen 已提交
2115
**返回值**
A
asfasdff 已提交
2116

2117 2118 2119
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2120

Z
zengyawen 已提交
2121
**示例**
A
asfasdff 已提交
2122

G
ge-yafang 已提交
2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136
```
let kvStore;
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);
}
```
A
asfasdff 已提交
2137 2138


2139
### delete
A
asfasdff 已提交
2140

A
asfasdff 已提交
2141
delete(key: string, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
2142 2143 2144

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

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

Z
zengyawen 已提交
2147
**参数**
A
asfasdff 已提交
2148

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

Z
zengyawen 已提交
2154
**示例**
A
asfasdff 已提交
2155

G
ge-yafang 已提交
2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167
```
let kvStore;
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) {
A
asfasdff 已提交
2168
            if (err != undefined) {
G
ge-yafang 已提交
2169
                console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2170 2171
                return;
            }
G
ge-yafang 已提交
2172
            console.log("delete success");
A
asfasdff 已提交
2173
        });
G
ge-yafang 已提交
2174 2175 2176 2177 2178
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2179 2180


2181
### delete
A
asfasdff 已提交
2182

A
asfasdff 已提交
2183
delete(key: string): Promise&lt;void&gt;
Z
zengyawen 已提交
2184 2185 2186

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

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

Z
zengyawen 已提交
2189
**参数**
A
asfasdff 已提交
2190

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

Z
zengyawen 已提交
2195
**返回值**
A
asfasdff 已提交
2196

2197 2198 2199
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2200

Z
zengyawen 已提交
2201
**示例**
A
asfasdff 已提交
2202

G
ge-yafang 已提交
2203 2204 2205 2206 2207 2208 2209 2210 2211
```
let kvStore;
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");
A
asfasdff 已提交
2212
        }).catch((err) => {
G
ge-yafang 已提交
2213
            console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2214
        });
G
ge-yafang 已提交
2215 2216 2217 2218 2219 2220 2221
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2222 2223


2224
### on
A
asfasdff 已提交
2225

A
asfasdff 已提交
2226
on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;ChangeNotification&gt;): void
Z
zengyawen 已提交
2227 2228 2229

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

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

Z
zengyawen 已提交
2232
**参数**
A
asfasdff 已提交
2233

2234 2235 2236
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |'dataChange'  | 是    |回调函数名称。       |
Z
zengyawen 已提交
2237 2238
| type  |[SubscribeType](#subscribetype) | 是    |表示订阅的类型。     |
| observer |Callback&lt;[ChangeNotification](#changenotification)&gt; | 是    |回调函数。 |
2239

Z
zengyawen 已提交
2240
**示例**
A
asfasdff 已提交
2241

G
ge-yafang 已提交
2242 2243 2244 2245 2246 2247
```
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
```
A
asfasdff 已提交
2248 2249


2250
### on
A
asfasdff 已提交
2251

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

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

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

Z
zengyawen 已提交
2258
**参数**
A
asfasdff 已提交
2259

2260 2261 2262
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |'syncComplete' | 是    |回调函数名称。       |
2263
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt; | 是    |回调函数。     |
2264

Z
zengyawen 已提交
2265
**示例**
A
asfasdff 已提交
2266

G
ge-yafang 已提交
2267 2268 2269 2270 2271 2272
```
let kvStore;
kvStore.on('syncComplete', function (data) {
    console.log("syncComplete callback call data: " + data);
});
```
A
asfasdff 已提交
2273

2274
### off<sup>8+</sup>
A
asfasdff 已提交
2275

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

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

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

Z
zengyawen 已提交
2282
**参数**
A
asfasdff 已提交
2283

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

Z
zengyawen 已提交
2289
**示例**
A
asfasdff 已提交
2290

G
ge-yafang 已提交
2291 2292 2293 2294 2295 2296 2297 2298 2299
```
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);
});
```
A
asfasdff 已提交
2300 2301


2302
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2303

2304
putBatch(entries: Entry[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2305 2306 2307

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

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

Z
zengyawen 已提交
2310
**参数**
A
asfasdff 已提交
2311

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

Z
zengyawen 已提交
2317
**示例**
A
asfasdff 已提交
2318

G
ge-yafang 已提交
2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329
```
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'
A
asfasdff 已提交
2330 2331
            }
        }
G
ge-yafang 已提交
2332
        entries.push(entry);
A
asfasdff 已提交
2333
    }
G
ge-yafang 已提交
2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346
    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);
}
```
A
asfasdff 已提交
2347 2348


2349
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2350

2351
putBatch(entries: Entry[]): Promise&lt;void&gt;
A
asfasdff 已提交
2352 2353 2354

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

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

Z
zengyawen 已提交
2357
**参数**
A
asfasdff 已提交
2358

2359 2360 2361
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| entries  |[Entry](#entry)[] | 是    |表示要批量插入的键值对。  |
A
asfasdff 已提交
2362

Z
zengyawen 已提交
2363
**返回值**
A
asfasdff 已提交
2364

2365 2366 2367
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2368

Z
zengyawen 已提交
2369
**示例**
A
asfasdff 已提交
2370

G
ge-yafang 已提交
2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381
```
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'
A
asfasdff 已提交
2382 2383
            }
        }
G
ge-yafang 已提交
2384 2385 2386 2387 2388 2389 2390 2391
        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));
A
asfasdff 已提交
2392
        }).catch((err) => {
G
ge-yafang 已提交
2393
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
2394
        });
G
ge-yafang 已提交
2395 2396 2397 2398 2399 2400 2401
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
2402 2403


2404
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2405

2406
deleteBatch(keys: string[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2407 2408 2409

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

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

Z
zengyawen 已提交
2412
**参数**
A
asfasdff 已提交
2413

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

Z
zengyawen 已提交
2419
**示例**
A
asfasdff 已提交
2420

G
ge-yafang 已提交
2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432
```
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'
A
asfasdff 已提交
2433 2434
            }
        }
G
ge-yafang 已提交
2435 2436
        entries.push(entry);
        keys.push(key + i);
A
asfasdff 已提交
2437
    }
G
ge-yafang 已提交
2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448
    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 已提交
2449 2450


A
asfasdff 已提交
2451
### deleteBatch<sup>8+</sup> ###
A
asfasdff 已提交
2452

2453
deleteBatch(keys: string[]): Promise&lt;void&gt;
A
asfasdff 已提交
2454 2455 2456

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

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

Z
zengyawen 已提交
2459
**参数**
A
asfasdff 已提交
2460

2461 2462 2463
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keys   |string[] | 是    |表示要批量删除的键值对。  |
A
asfasdff 已提交
2464

Z
zengyawen 已提交
2465
**返回值**
A
asfasdff 已提交
2466

2467 2468 2469
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2470

Z
zengyawen 已提交
2471
**示例**
A
asfasdff 已提交
2472

G
ge-yafang 已提交
2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484
```
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'
A
asfasdff 已提交
2485 2486
            }
        }
G
ge-yafang 已提交
2487 2488 2489 2490 2491 2492 2493 2494
        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');
A
asfasdff 已提交
2495
        }).catch((err) => {
G
ge-yafang 已提交
2496
            console.log('deleteBatch fail ' + JSON.stringify(err));
A
asfasdff 已提交
2497
        });
G
ge-yafang 已提交
2498 2499 2500 2501 2502 2503 2504
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2505 2506


A
asfasdff 已提交
2507
### startTransaction<sup>8+</sup> ###
A
asfasdff 已提交
2508

2509
startTransaction(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2510 2511 2512

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

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

Z
zengyawen 已提交
2515
**参数**
A
asfasdff 已提交
2516

2517 2518 2519
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2520

Z
zengyawen 已提交
2521
**示例**
A
asfasdff 已提交
2522

G
ge-yafang 已提交
2523 2524 2525 2526 2527 2528 2529 2530 2531 2532
```
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'
A
asfasdff 已提交
2533 2534
            }
        }
G
ge-yafang 已提交
2535
        entries.push(entry);
A
asfasdff 已提交
2536
    }
G
ge-yafang 已提交
2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550
    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');
A
asfasdff 已提交
2551
        });
G
ge-yafang 已提交
2552 2553 2554 2555 2556
    });
}catch(e) {
    console.log('startTransaction e ' + e);
}
```
A
asfasdff 已提交
2557 2558


A
asfasdff 已提交
2559
### startTransaction<sup>8+</sup> ###
A
asfasdff 已提交
2560

2561
startTransaction(): Promise&lt;void&gt;
A
asfasdff 已提交
2562 2563 2564

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

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

Z
zengyawen 已提交
2567
**返回值**
A
asfasdff 已提交
2568

2569 2570 2571
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2572

Z
zengyawen 已提交
2573
**示例**
A
asfasdff 已提交
2574

G
ge-yafang 已提交
2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591
```
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 已提交
2592 2593


A
asfasdff 已提交
2594
### commit<sup>8+</sup> ###
A
asfasdff 已提交
2595

2596
commit(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2597 2598 2599

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

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

Z
zengyawen 已提交
2602
**参数**
A
asfasdff 已提交
2603

2604 2605 2606
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2607

Z
zengyawen 已提交
2608
**示例**
A
asfasdff 已提交
2609

G
ge-yafang 已提交
2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623
```
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 已提交
2624 2625


A
asfasdff 已提交
2626
### commit<sup>8+</sup> ###
A
asfasdff 已提交
2627

2628
commit(): Promise&lt;void&gt;
A
asfasdff 已提交
2629 2630 2631

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

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

Z
zengyawen 已提交
2634
**返回值**
A
asfasdff 已提交
2635

2636 2637 2638
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2639

Z
zengyawen 已提交
2640
**示例**
A
asfasdff 已提交
2641

G
ge-yafang 已提交
2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653
```
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 已提交
2654 2655


A
asfasdff 已提交
2656
### rollback<sup>8+</sup> ###
A
asfasdff 已提交
2657

2658
rollback(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2659 2660 2661

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

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

Z
zengyawen 已提交
2664
**参数**
A
asfasdff 已提交
2665

2666 2667 2668
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2669

Z
zengyawen 已提交
2670
**示例**
A
asfasdff 已提交
2671

G
ge-yafang 已提交
2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685
```
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 已提交
2686 2687


A
asfasdff 已提交
2688
### rollback<sup>8+</sup> ###
A
asfasdff 已提交
2689

2690
rollback(): Promise&lt;void&gt;
A
asfasdff 已提交
2691 2692 2693

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

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

Z
zengyawen 已提交
2696
**返回值**
A
asfasdff 已提交
2697

2698 2699 2700
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2701

Z
zengyawen 已提交
2702
**示例**
A
asfasdff 已提交
2703

G
ge-yafang 已提交
2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715
```
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 已提交
2716 2717


A
asfasdff 已提交
2718
### enableSync<sup>8+</sup> ###
A
asfasdff 已提交
2719

2720
enableSync(enabled: boolean, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2721 2722 2723

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

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

Z
zengyawen 已提交
2726
**参数**
A
asfasdff 已提交
2727

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

Z
zengyawen 已提交
2733
**示例**
A
asfasdff 已提交
2734

G
ge-yafang 已提交
2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748
```
let kvStore;
try {
    kvStore.enableSync(true, function (err,data) {
        if (err == undefined) {
            console.log('enableSync success');
        } else {
            console.log('enableSync fail');
        }
    });
}catch(e) {
    console.log('EnableSync e ' + e);
}
```
A
asfasdff 已提交
2749 2750


A
asfasdff 已提交
2751
### enableSync<sup>8+</sup> ###
A
asfasdff 已提交
2752

2753
enableSync(enabled: boolean): Promise&lt;void&gt;
A
asfasdff 已提交
2754 2755 2756

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

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

Z
zengyawen 已提交
2759
**参数**
A
asfasdff 已提交
2760

2761 2762 2763
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| enabled  |boolean | 是    |指定是否开启同步,ture表示开启同步,false表示不启用同步。  |
A
asfasdff 已提交
2764

Z
zengyawen 已提交
2765
**返回值**
A
asfasdff 已提交
2766

2767 2768 2769
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2770

Z
zengyawen 已提交
2771
**示例**
A
asfasdff 已提交
2772

G
ge-yafang 已提交
2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784
```
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 已提交
2785 2786


A
asfasdff 已提交
2787
### setSyncRange<sup>8+</sup> ###
A
asfasdff 已提交
2788

2789
setSyncRange(localLabels: string[], remoteSupportLabels: string[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2790 2791 2792

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

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

Z
zengyawen 已提交
2795
**参数**
A
asfasdff 已提交
2796

2797 2798 2799 2800 2801
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2802

Z
zengyawen 已提交
2803
**示例**
A
asfasdff 已提交
2804

G
ge-yafang 已提交
2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816
```
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 已提交
2817 2818


A
asfasdff 已提交
2819
### setSyncRange<sup>8+</sup> ###
A
asfasdff 已提交
2820

2821
setSyncRange(localLabels: string[], remoteSupportLabels: string[]): Promise&lt;void&gt;
A
asfasdff 已提交
2822 2823 2824

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

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

Z
zengyawen 已提交
2827
**参数**
A
asfasdff 已提交
2828

2829 2830 2831 2832 2833
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |

A
asfasdff 已提交
2834

Z
zengyawen 已提交
2835
**返回值**
A
asfasdff 已提交
2836

2837 2838 2839
| 类型    | 说明       |
| ------  | -------   |
| Promise&lt;void&gt; |Promise实例,用于异步处理。|
A
asfasdff 已提交
2840

Z
zengyawen 已提交
2841
**示例**
A
asfasdff 已提交
2842

G
ge-yafang 已提交
2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856
```
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);
}
```
A
asfasdff 已提交
2857 2858


2859
## SubscribeType
Z
zengyawen 已提交
2860 2861 2862

描述订阅类型。

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

2865 2866 2867 2868 2869 2870 2871
| 名称  | 默认值   | 说明                    |
| -----  | ------   | ----------------------- |
| SUBSCRIBE_TYPE_LOCAL  |0 |表示订阅本地数据变更。  |
| SUBSCRIBE_TYPE_REMOTE |1 |表示订阅远端数据变更。  |
| SUBSCRIBE_TYPE_ALL  |2 |表示订阅远端和本地数据变更。  |

## ChangeNotification
Z
zengyawen 已提交
2872 2873 2874

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

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

2877 2878 2879 2880 2881 2882 2883 2884
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| insertEntries | [Entry](#entry)[]   | 是  |  是 |数据添加记录。   |
| updateEntries | [Entry](#entry)[]   | 是  |  是 |数据更新记录。   |
| deleteEntries | [Entry](#entry)[]   | 是  |  是 |数据删除记录。   |
| deviceId | string   | 是  |  是 |设备ID,此处为设备UUID。  |

## Entry
Z
zengyawen 已提交
2885 2886 2887

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

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

2890 2891 2892 2893 2894 2895 2896
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| key | string   | 是  |  是 |键值。   |
| value | [Value](#value) | 是  |  是 |值对象。   |


## Value
Z
zengyawen 已提交
2897 2898 2899

存储在数据库中的对象。

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

2902 2903 2904 2905 2906 2907
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| type | [ValueType](#value)   | 是  |  是 |值类型。   |
| value | Uint8Array / string / number / boolean| 是  |  是 |值对象。   |

## ValueType
Z
zengyawen 已提交
2908 2909 2910 2911 2912

用于表示数据类型。

只能被内部应用使用。

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

2915 2916 2917 2918 2919 2920 2921 2922 2923 2924
| 名称  | 默认值   | 说明                    |
| -----  | ------   | ----------------------- |
| STRING  |0 |表示值类型为字符串。  |
| INTEGER |1 |表示值类型为整数。  |
| FLOAT   |2 |表示值类型为浮点数。  |
| BYTE_ARRAY   |3 |表示值类型为字节数组。  |
| BOOLEAN   |4 |表示值类型为布尔值。  |
| DOUBLE   |5 |表示值类型为双浮点数。  |

## SingleKVStore
Z
zengyawen 已提交
2925

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

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

2930
### get
Z
zengyawen 已提交
2931

A
asfasdff 已提交
2932
get(key: string, callback: AsyncCallback&lt;Uint8Array | string | boolean | number&gt;): void
Z
zengyawen 已提交
2933 2934 2935

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

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

Z
zengyawen 已提交
2938
**参数**
A
asfasdff 已提交
2939

2940 2941 2942
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| key    |string   | 是    |要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH](#constants)。  |
G
ge-yafang 已提交
2943
| callback  |AsyncCallback&lt;Uint8Array \| string \| boolean \| number&gt;) | 是    |回调函数,获取查询的值。  |
A
asfasdff 已提交
2944

Z
zengyawen 已提交
2945
**示例**
A
asfasdff 已提交
2946

G
ge-yafang 已提交
2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959
```
let kvStore;
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);
A
asfasdff 已提交
2960
        });
G
ge-yafang 已提交
2961 2962 2963 2964 2965
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2966 2967


2968
### get
A
asfasdff 已提交
2969

Z
zengyawen 已提交
2970
get(key: string): Promise&lt;Uint8Array | string | boolean | number>
Z
zengyawen 已提交
2971 2972 2973

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

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

Z
zengyawen 已提交
2976
**参数**
A
asfasdff 已提交
2977

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

A
asfasdff 已提交
2982

Z
zengyawen 已提交
2983
**返回值**
A
asfasdff 已提交
2984

2985 2986
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2987
|Promise&lt;Uint8Array \| string \| boolean \| number&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
2988

Z
zengyawen 已提交
2989
**示例**
A
asfasdff 已提交
2990

G
ge-yafang 已提交
2991 2992 2993 2994 2995 2996 2997 2998 2999
```
let kvStore;
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);
A
asfasdff 已提交
3000
        }).catch((err) => {
G
ge-yafang 已提交
3001
            console.log("get err: " + JSON.stringify(err));
A
asfasdff 已提交
3002
        });
G
ge-yafang 已提交
3003 3004 3005 3006 3007 3008 3009
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3010

A
asfasdff 已提交
3011
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3012

3013
getEntries(keyPrefix: string, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
3014 3015 3016

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

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

Z
zengyawen 已提交
3019
**参数**
A
asfasdff 已提交
3020

3021 3022 3023
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
G
ge-yafang 已提交
3024
| callback    |AsyncCallback&lt;[Entry](#entry)[]&gt;   | 是    |回调函数,获取指定前缀的键值对列表。  |
A
asfasdff 已提交
3025

Z
zengyawen 已提交
3026
**示例**
A
asfasdff 已提交
3027

G
ge-yafang 已提交
3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038
```
let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_number_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.INTEGER,
                value : 222
A
asfasdff 已提交
3039 3040
            }
        }
G
ge-yafang 已提交
3041
        entries.push(entry);
A
asfasdff 已提交
3042
    }
G
ge-yafang 已提交
3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        await kvStore.getEntries('batch_test_number_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);
}
```
A
asfasdff 已提交
3055 3056


A
asfasdff 已提交
3057
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3058

3059
getEntries(keyPrefix: string): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
3060 3061 3062

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

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

Z
zengyawen 已提交
3065
**参数**
A
asfasdff 已提交
3066

3067 3068 3069
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
A
asfasdff 已提交
3070

Z
zengyawen 已提交
3071
**返回值**
A
asfasdff 已提交
3072

3073 3074 3075
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3076

Z
zengyawen 已提交
3077
**示例**
A
asfasdff 已提交
3078

G
ge-yafang 已提交
3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089
```
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'
A
asfasdff 已提交
3090 3091
            }
        }
G
ge-yafang 已提交
3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102
        entries.push(entry);
    }
    console.log('entries: ' + 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('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);
A
asfasdff 已提交
3103
        }).catch((err) => {
G
ge-yafang 已提交
3104
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3105
        });
G
ge-yafang 已提交
3106 3107 3108 3109 3110 3111 3112
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3113 3114


A
asfasdff 已提交
3115
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3116

3117
getEntries(query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
3118 3119 3120

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

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

Z
zengyawen 已提交
3123
**参数**
A
asfasdff 已提交
3124

3125 3126
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
3127
| query  |[Query](#query8)   | 是    |表示要匹配的键前缀。  |
G
ge-yafang 已提交
3128
| callback  |AsyncCallback&lt;[Entry](#entry)[]&gt;   | 是    |回调函数,获取指定前缀的键值对列表。  |
A
asfasdff 已提交
3129

Z
zengyawen 已提交
3130
**示例**
A
asfasdff 已提交
3131

G
ge-yafang 已提交
3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143
```
let kvStore;
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 : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
3144 3145
            }
        }
G
ge-yafang 已提交
3146
        entries.push(entry);
A
asfasdff 已提交
3147
    }
G
ge-yafang 已提交
3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        await kvStore.getEntries(query, function (err,entrys) {
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3164 3165


A
asfasdff 已提交
3166
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3167

3168
getEntries(query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
3169 3170 3171

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

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

Z
zengyawen 已提交
3174
**参数**
A
asfasdff 已提交
3175

3176 3177
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
3178
| query  |[Query](#query8)   | 是    |表示查询对象。  |
A
asfasdff 已提交
3179

Z
zengyawen 已提交
3180
**返回值**
A
asfasdff 已提交
3181

3182 3183 3184
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3185

Z
zengyawen 已提交
3186
**示例**
A
asfasdff 已提交
3187

G
ge-yafang 已提交
3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198
```
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 : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
3199 3200
            }
        }
G
ge-yafang 已提交
3201 3202 3203 3204 3205 3206 3207 3208 3209
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        await kvStore.getEntries(query).then((entrys) => {
            console.log('getEntries success');
A
asfasdff 已提交
3210
        }).catch((err) => {
G
ge-yafang 已提交
3211
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3212
        });
G
ge-yafang 已提交
3213 3214 3215 3216 3217 3218 3219 3220
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3221 3222


A
asfasdff 已提交
3223
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3224

3225
getResultSet(keyPrefix: string, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
3226 3227 3228

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

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

Z
zengyawen 已提交
3231
**参数**
A
asfasdff 已提交
3232

3233 3234 3235
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
Z
zengyawen 已提交
3236
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;   | 是    |回调函数。 |
A
asfasdff 已提交
3237

Z
zengyawen 已提交
3238
**示例**
A
asfasdff 已提交
3239

G
ge-yafang 已提交
3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251
```
let kvStore;
try {
    let resultSet;
    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'
A
asfasdff 已提交
3252 3253
            }
        }
G
ge-yafang 已提交
3254
        entries.push(entry);
A
asfasdff 已提交
3255
    }
G
ge-yafang 已提交
3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269
    kvStore.putBatch(entries, async function (err, data) {
        console.log('GetResultSet putBatch success');
        await kvStore.getResultSet('batch_test_string_key', async function (err, result) {
            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 已提交
3270 3271


A
asfasdff 已提交
3272
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3273

3274
getResultSet(keyPrefix: string): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
3275 3276 3277

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

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

Z
zengyawen 已提交
3280
**参数**
A
asfasdff 已提交
3281

3282 3283 3284
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
A
asfasdff 已提交
3285

Z
zengyawen 已提交
3286
**返回值**
A
asfasdff 已提交
3287

3288 3289
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
3290
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3291

Z
zengyawen 已提交
3292
**示例**
A
asfasdff 已提交
3293

G
ge-yafang 已提交
3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305
```
let kvStore;
try {
    let resultSet;
    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'
A
asfasdff 已提交
3306 3307
            }
        }
G
ge-yafang 已提交
3308
        entries.push(entry);
A
asfasdff 已提交
3309
    }
G
ge-yafang 已提交
3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).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) => {
        console.log('getResultSet fail ' + JSON.stringify(err));
    });
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('GetResult closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResult e ' + e);
}
```
A
asfasdff 已提交
3330 3331


A
asfasdff 已提交
3332
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3333

3334
getResultSet(query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
3335 3336 3337

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

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

Z
zengyawen 已提交
3340
**参数**
A
asfasdff 已提交
3341

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

Z
zengyawen 已提交
3347
**示例**
A
asfasdff 已提交
3348

G
ge-yafang 已提交
3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360
```
let kvStore;
try {
    let resultSet;
    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'
A
asfasdff 已提交
3361 3362
            }
        }
G
ge-yafang 已提交
3363
        entries.push(entry);
A
asfasdff 已提交
3364
    }
G
ge-yafang 已提交
3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        await kvStore.getResultSet(query, async function (err, result) {
            console.log('getResultSet success');
            resultSet = result;
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3378 3379


A
asfasdff 已提交
3380
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3381

3382
getResultSet(query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
3383 3384 3385

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

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

Z
zengyawen 已提交
3388
**参数**
A
asfasdff 已提交
3389

3390 3391
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3392
| query  |[Query](#query8)    | 是    |表示查询对象。             |
A
asfasdff 已提交
3393

Z
zengyawen 已提交
3394
**返回值**
A
asfasdff 已提交
3395

3396 3397
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
3398
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3399

Z
zengyawen 已提交
3400
**示例**
A
asfasdff 已提交
3401

G
ge-yafang 已提交
3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413
```
let kvStore;
try {
    let resultSet;
    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'
A
asfasdff 已提交
3414 3415
            }
        }
G
ge-yafang 已提交
3416
        entries.push(entry);
A
asfasdff 已提交
3417
    }
G
ge-yafang 已提交
3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434
    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.getResultSet(query).then((result) => {
        console.log(' getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3435

A
asfasdff 已提交
3436
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3437

3438
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3439 3440 3441

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

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

Z
zengyawen 已提交
3444
**参数**
A
asfasdff 已提交
3445

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

Z
zengyawen 已提交
3451
**示例**
A
asfasdff 已提交
3452

G
ge-yafang 已提交
3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467
```
let kvStore;
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 已提交
3468 3469


A
asfasdff 已提交
3470
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3471

3472
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
3473 3474 3475

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

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

Z
zengyawen 已提交
3478
**参数**
A
asfasdff 已提交
3479

3480 3481
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3482
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的 KvStoreResultSet 对象。             |
A
asfasdff 已提交
3483

Z
zengyawen 已提交
3484
**返回值**
A
asfasdff 已提交
3485

3486 3487 3488
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3489

Z
zengyawen 已提交
3490
**示例**
A
asfasdff 已提交
3491

G
ge-yafang 已提交
3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504
```
let kvStore;
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 已提交
3505 3506


A
asfasdff 已提交
3507
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
3508

3509
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
3510 3511 3512

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

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

Z
zengyawen 已提交
3515
**参数**
A
asfasdff 已提交
3516

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

Z
zengyawen 已提交
3522
**示例**
A
asfasdff 已提交
3523

G
ge-yafang 已提交
3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534
```
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'
A
asfasdff 已提交
3535 3536
            }
        }
G
ge-yafang 已提交
3537
        entries.push(entry);
A
asfasdff 已提交
3538
    }
G
ge-yafang 已提交
3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550
    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) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3551 3552


A
asfasdff 已提交
3553
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
3554

3555
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
3556 3557 3558

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

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

Z
zengyawen 已提交
3561
**参数**
A
asfasdff 已提交
3562

3563 3564
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3565
| query  |[Query](#query8)   | 是    |表示查询对象。         |
A
asfasdff 已提交
3566

Z
zengyawen 已提交
3567
**返回值**
A
asfasdff 已提交
3568

3569 3570 3571
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;number&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3572

Z
zengyawen 已提交
3573
**示例**
A
asfasdff 已提交
3574

G
ge-yafang 已提交
3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585
```
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'
A
asfasdff 已提交
3586 3587
            }
        }
G
ge-yafang 已提交
3588
        entries.push(entry);
A
asfasdff 已提交
3589
    }
G
ge-yafang 已提交
3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605
    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));
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3606 3607


A
asfasdff 已提交
3608
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
3609

3610
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3611 3612 3613

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

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

Z
zengyawen 已提交
3616
**参数**
A
asfasdff 已提交
3617

3618 3619 3620 3621
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。      |
A
asfasdff 已提交
3622

Z
zengyawen 已提交
3623
**示例**
A
asfasdff 已提交
3624

G
ge-yafang 已提交
3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641
```
let kvStore;
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');
        const deviceid = 'no_exist_device_id';
        await kvStore.removeDeviceData(deviceid, async function (err,data) {
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
                await kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err,data) {
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
3642
        });
G
ge-yafang 已提交
3643 3644 3645 3646 3647
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
3648 3649


A
asfasdff 已提交
3650
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
3651

3652
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
3653 3654 3655

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

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

Z
zengyawen 已提交
3658
**参数**
A
asfasdff 已提交
3659

3660 3661 3662
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
A
asfasdff 已提交
3663

Z
zengyawen 已提交
3664
**返回值**
A
asfasdff 已提交
3665

3666 3667 3668
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3669

Z
zengyawen 已提交
3670
**示例**
A
asfasdff 已提交
3671

G
ge-yafang 已提交
3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696
```
let kvStore;
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 已提交
3697 3698


A
asfasdff 已提交
3699
### on<sup>8+</sup> ###
A
asfasdff 已提交
3700

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

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

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

Z
zengyawen 已提交
3707
**参数**
A
asfasdff 已提交
3708

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

Z
zengyawen 已提交
3714
**示例**
A
asfasdff 已提交
3715

G
ge-yafang 已提交
3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732
```
let kvStore;
const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
const VALUE_TEST_FLOAT_ELEMENT = 321.12;
try {
    kvStore.on('syncComplete', function (data) {
        console.log('syncComplete ' + data)
    });
    kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
        console.log('syncComplete put success');
    }).catch((error) => {
        console.log('syncComplete put fail ' + error);
    });
}catch(e) {
    console.log('syncComplete put e ' + e);
}
```
A
asfasdff 已提交
3733 3734


A
asfasdff 已提交
3735
### off<sup>8+</sup> ###
A
asfasdff 已提交
3736

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

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

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

Z
zengyawen 已提交
3743
**参数**
A
asfasdff 已提交
3744

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

Z
zengyawen 已提交
3750
**示例**
A
asfasdff 已提交
3751

G
ge-yafang 已提交
3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763
```
let kvStore;
try {
    const func = function (data) {
        console.log('syncComplete ' + data)
    };
    kvStore.on('syncComplete', func);
    kvStore.off('syncComplete', func);
}catch(e) {
    console.log('syncComplete e ' + e);
}
```
A
asfasdff 已提交
3764 3765


3766
### sync
A
asfasdff 已提交
3767

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

A
asfasdff 已提交
3770
在手动模式下,触发数据库同步,此方法为同步方法。
Z
zuojiangjiang 已提交
3771
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
Z
zengyawen 已提交
3772

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

Z
zengyawen 已提交
3775
**参数**
A
asfasdff 已提交
3776

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

Z
zengyawen 已提交
3783
**示例**
A
asfasdff 已提交
3784

G
ge-yafang 已提交
3785 3786 3787 3788
```
let kvStore;
kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000);
```
A
asfasdff 已提交
3789

A
asfasdff 已提交
3790
### setSyncParam<sup>8+</sup> ###
A
asfasdff 已提交
3791

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

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

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

Z
zengyawen 已提交
3798
**参数**
A
asfasdff 已提交
3799

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

Z
zengyawen 已提交
3805
**示例**
A
asfasdff 已提交
3806

G
ge-yafang 已提交
3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817
```
let kvStore;
try {
    const defaultAllowedDelayMs = 500;
    kvStore.setSyncParam(defaultAllowedDelayMs, function (err,data) {
        console.log('SetSyncParam put success');
    });
}catch(e) {
    console.log('testSingleKvStoreSetSyncParam e ' + e);
}
```
A
asfasdff 已提交
3818 3819


A
asfasdff 已提交
3820
### setSyncParam<sup>8+</sup> ###
A
asfasdff 已提交
3821

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

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

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

Z
zengyawen 已提交
3828
**参数**
A
asfasdff 已提交
3829

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

A
asfasdff 已提交
3834

Z
zengyawen 已提交
3835
**返回值**
A
asfasdff 已提交
3836

3837 3838 3839
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3840

Z
zengyawen 已提交
3841
**示例**
A
asfasdff 已提交
3842

G
ge-yafang 已提交
3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855
```
let kvStore;
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 已提交
3856 3857


A
asfasdff 已提交
3858
### getSecurityLevel<sup>8+</sup> ###
A
asfasdff 已提交
3859

3860
getSecurityLevel(callback: AsyncCallback&lt;SecurityLevel&gt;): void
A
asfasdff 已提交
3861 3862 3863

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

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

Z
zengyawen 已提交
3866
**参数**
A
asfasdff 已提交
3867

3868 3869 3870
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| callback  |AsyncCallback&lt;[SecurityLevel](#securitylevel)&gt;  | 是    |回调函数。    |
A
asfasdff 已提交
3871

Z
zengyawen 已提交
3872
**示例**
A
asfasdff 已提交
3873

G
ge-yafang 已提交
3874 3875 3876 3877 3878 3879 3880 3881 3882 3883
```
let kvStore;
try {
    kvStore.getSecurityLevel(function (err,data) {
        console.log('getSecurityLevel success');
    });
}catch(e) {
    console.log('GetSecurityLeve e ' + e);
}
```
A
asfasdff 已提交
3884 3885


A
asfasdff 已提交
3886
### getSecurityLevel<sup>8+</sup> ###
A
asfasdff 已提交
3887

3888
getSecurityLevel(): Promise&lt;SecurityLevel&gt;
A
asfasdff 已提交
3889 3890 3891

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

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

Z
zengyawen 已提交
3894
**返回值**
A
asfasdff 已提交
3895

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

Z
zengyawen 已提交
3900
**示例**
A
asfasdff 已提交
3901

G
ge-yafang 已提交
3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913
```
let kvStore;
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 已提交
3914 3915


A
asfasdff 已提交
3916
## DeviceKVStore<sup>8+</sup> ##
A
asfasdff 已提交
3917

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

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

A
asfasdff 已提交
3922
### get<sup>8+</sup> ###
A
asfasdff 已提交
3923

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

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

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

Z
zengyawen 已提交
3930
**参数**
A
asfasdff 已提交
3931

3932 3933 3934 3935
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| key       |string  | 是    |表示要查询 key 值的键。    |
G
ge-yafang 已提交
3936
| callback  |AsyncCallback&lt;boolean\|string\|number\|Uint8Array&gt;  | 是    |回调函数,返回匹配给定条件的字符串值。    |
A
asfasdff 已提交
3937

Z
zengyawen 已提交
3938
**示例**
A
asfasdff 已提交
3939

G
ge-yafang 已提交
3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954
```
let kvStore;
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');
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, function (err,data) {
            console.log('get success');
        });
    })
}catch(e) {
    console.log('get e' + e);
}
```
A
asfasdff 已提交
3955 3956


A
asfasdff 已提交
3957
### get<sup>8+</sup> ###
A
asfasdff 已提交
3958

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

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

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

Z
zengyawen 已提交
3965
**参数**
A
asfasdff 已提交
3966

3967 3968 3969 3970
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| key       |string  | 是    |表示要查询 key 值的键。    |
A
asfasdff 已提交
3971

Z
zengyawen 已提交
3972
**返回值**
A
asfasdff 已提交
3973

3974 3975
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3976
|Promise&lt;boolean\|string\|number\|Uint8Array&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
3977

Z
zengyawen 已提交
3978
**示例**
A
asfasdff 已提交
3979

G
ge-yafang 已提交
3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990
```
let kvStore;
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');
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log('get success');
        }).catch((err) => {
            console.log('get fail ' + JSON.stringify(err));
A
asfasdff 已提交
3991
        });
G
ge-yafang 已提交
3992 3993 3994 3995 3996 3997 3998
    }).catch((error) => {
        console.log('put error' + error);
    });
} catch (e) {
    console.log('Get e ' + e);
}
```
A
asfasdff 已提交
3999 4000


A
asfasdff 已提交
4001
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4002

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

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

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

Z
zengyawen 已提交
4009
**参数**
A
asfasdff 已提交
4010

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

Z
zengyawen 已提交
4017
**示例**
A
asfasdff 已提交
4018

G
ge-yafang 已提交
4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029
```
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'
A
asfasdff 已提交
4030 4031
            }
        }
G
ge-yafang 已提交
4032
        entries.push(entry);
A
asfasdff 已提交
4033
    }
G
ge-yafang 已提交
4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046
    console.log('entries: ' + entries);
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        await kvStore.getEntries('localDeviceId', '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);
}
```
A
asfasdff 已提交
4047 4048


A
asfasdff 已提交
4049
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4050

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

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

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

Z
zengyawen 已提交
4057
**参数**
A
asfasdff 已提交
4058

4059 4060 4061 4062
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4063

Z
zengyawen 已提交
4064
**返回值**
A
asfasdff 已提交
4065

4066 4067 4068
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4069

Z
zengyawen 已提交
4070
**示例**
A
asfasdff 已提交
4071

G
ge-yafang 已提交
4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082
```
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'
A
asfasdff 已提交
4083 4084
            }
        }
G
ge-yafang 已提交
4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        await kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entrys) => {
            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);
A
asfasdff 已提交
4096
        }).catch((err) => {
G
ge-yafang 已提交
4097
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4098
        });
G
ge-yafang 已提交
4099 4100 4101 4102 4103 4104 4105
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4106 4107


A
asfasdff 已提交
4108
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4109

4110
getEntries(query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4111 4112 4113

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

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

Z
zengyawen 已提交
4116
**参数**
A
asfasdff 已提交
4117

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

Z
zengyawen 已提交
4123
**示例**
A
asfasdff 已提交
4124

G
ge-yafang 已提交
4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136
```
let kvStore;
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 : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
4137 4138
            }
        }
G
ge-yafang 已提交
4139
        entries.push(entry);
A
asfasdff 已提交
4140
    }
G
ge-yafang 已提交
4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        expect(err == undefined).assertTrue();
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        await kvStore.getEntries(query, function (err,entrys) {
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        });
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4159 4160


A
asfasdff 已提交
4161
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4162

4163
getEntries(query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4164 4165 4166

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

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

Z
zengyawen 已提交
4169
**参数**
A
asfasdff 已提交
4170

4171 4172
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4173
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4174

Z
zengyawen 已提交
4175
**返回值**
A
asfasdff 已提交
4176

4177 4178 4179
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4180

Z
zengyawen 已提交
4181
**示例**
A
asfasdff 已提交
4182

G
ge-yafang 已提交
4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194
```
let kvStore;
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 : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
4195 4196
            }
        }
G
ge-yafang 已提交
4197 4198 4199 4200 4201 4202 4203 4204 4205
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        await kvStore.getEntries(query).then((entrys) => {
            console.log('getEntries success');
A
asfasdff 已提交
4206
        }).catch((err) => {
G
ge-yafang 已提交
4207
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4208
        });
G
ge-yafang 已提交
4209 4210 4211 4212 4213 4214 4215 4216
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4217 4218


A
asfasdff 已提交
4219
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4220

4221
getEntries(deviceId: string, query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4222 4223 4224

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

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

Z
zengyawen 已提交
4227
**参数**
A
asfasdff 已提交
4228

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

Z
zengyawen 已提交
4235
**示例**
A
asfasdff 已提交
4236

G
ge-yafang 已提交
4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248
```
let kvStore;
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 : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
4249 4250
            }
        }
G
ge-yafang 已提交
4251
        entries.push(entry);
A
asfasdff 已提交
4252
    }
G
ge-yafang 已提交
4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        expect(err == undefined).assertTrue();
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
        await kvStore.getEntries('localDeviceId', query, function (err,entrys) {
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        })
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4271 4272


A
asfasdff 已提交
4273
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4274

4275
getEntries(deviceId: string, query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4276 4277 4278

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

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

Z
zengyawen 已提交
4281
**参数**
A
asfasdff 已提交
4282

4283 4284 4285
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4286
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4287

Z
zengyawen 已提交
4288
**返回值**
A
asfasdff 已提交
4289

4290 4291 4292
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[Entry](#entry)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4293

Z
zengyawen 已提交
4294
**示例**
A
asfasdff 已提交
4295

G
ge-yafang 已提交
4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307
```
let kvStore;
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 : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
A
asfasdff 已提交
4308 4309
            }
        }
G
ge-yafang 已提交
4310 4311 4312 4313 4314 4315 4316 4317 4318 4319
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
        await kvStore.getEntries('localDeviceId', query).then((entrys) => {
            console.log('getEntries success');
A
asfasdff 已提交
4320
        }).catch((err) => {
G
ge-yafang 已提交
4321
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4322
        });
G
ge-yafang 已提交
4323 4324 4325 4326 4327 4328 4329 4330
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4331 4332


A
asfasdff 已提交
4333
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4334

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

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

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

Z
zengyawen 已提交
4341
**参数**
A
asfasdff 已提交
4342

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

Z
zengyawen 已提交
4349
**示例**
A
asfasdff 已提交
4350

G
ge-yafang 已提交
4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
        console.log('getResultSet success');
        resultSet = result;
        await kvStore.closeResultSet(resultSet, function (err, data) {
            console.log('closeResultSet success');
        })
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4366 4367


A
asfasdff 已提交
4368
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4369

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

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

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

Z
zengyawen 已提交
4376
**参数**
A
asfasdff 已提交
4377

4378 4379 4380 4381
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4382

Z
zengyawen 已提交
4383
**返回值**
A
asfasdff 已提交
4384

4385 4386
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
4387
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4388

Z
zengyawen 已提交
4389
**示例**
A
asfasdff 已提交
4390

G
ge-yafang 已提交
4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409
```
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
        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 已提交
4410 4411


A
asfasdff 已提交
4412
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4413

4414
getResultSet(query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4415 4416 4417

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

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

Z
zengyawen 已提交
4420
**参数**
A
asfasdff 已提交
4421

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

Z
zengyawen 已提交
4427
**示例**
A
asfasdff 已提交
4428

G
ge-yafang 已提交
4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440
```
let kvStore;
try {
    let resultSet;
    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'
A
asfasdff 已提交
4441 4442
            }
        }
G
ge-yafang 已提交
4443
        entries.push(entry);
A
asfasdff 已提交
4444
    }
G
ge-yafang 已提交
4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461
    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');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4462 4463


A
asfasdff 已提交
4464
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4465

4466
getResultSet(query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4467 4468 4469

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

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

Z
zengyawen 已提交
4472
**参数**
A
asfasdff 已提交
4473

4474 4475
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4476
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4477

Z
zengyawen 已提交
4478
**返回值**
A
asfasdff 已提交
4479

4480 4481
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
4482
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4483

Z
zengyawen 已提交
4484
**示例**
A
asfasdff 已提交
4485

G
ge-yafang 已提交
4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497
```
let kvStore;
try {
    let resultSet;
    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'
A
asfasdff 已提交
4498 4499
            }
        }
G
ge-yafang 已提交
4500
        entries.push(entry);
A
asfasdff 已提交
4501
    }
G
ge-yafang 已提交
4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + err);
    });
    const query = new distributedData.Query();
    query.deviceId('localDeviceId');
    query.prefixKey("batch_test");
    console.log("GetResultSet " + query.getSqlLike());
    kvStore.getResultSet(query).then((result) => {
        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 已提交
4526 4527


A
asfasdff 已提交
4528
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4529

4530
getResultSet(deviceId: string, query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4531 4532 4533

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

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

Z
zengyawen 已提交
4536
**参数**
A
asfasdff 已提交
4537

4538 4539 4540
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4541 4542
| query  |[Query](#query8)  | 是    |表示查询对象。    |
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数,返回与指定 Query 对象匹配的 KvStoreResultSet 对象。    |
A
asfasdff 已提交
4543

Z
zengyawen 已提交
4544
**示例**
A
asfasdff 已提交
4545

G
ge-yafang 已提交
4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557
```
let kvStore;
try {
    let resultSet;
    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'
A
asfasdff 已提交
4558 4559
            }
        }
G
ge-yafang 已提交
4560
        entries.push(entry);
A
asfasdff 已提交
4561
    }
G
ge-yafang 已提交
4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577
    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');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4578 4579


A
asfasdff 已提交
4580
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4581

4582
getResultSet(deviceId: string, query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4583 4584 4585

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

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

Z
zengyawen 已提交
4588
**参数**
A
asfasdff 已提交
4589

4590 4591 4592
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4593
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4594

Z
zengyawen 已提交
4595
**返回值**
A
asfasdff 已提交
4596

4597 4598
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
4599
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4600

Z
zengyawen 已提交
4601
**示例**
A
asfasdff 已提交
4602

G
ge-yafang 已提交
4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614
```
let kvStore;
try {
    let resultSet;
    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'
A
asfasdff 已提交
4615 4616
            }
        }
G
ge-yafang 已提交
4617
        entries.push(entry);
A
asfasdff 已提交
4618
    }
G
ge-yafang 已提交
4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643
    kvStore.putBatch(entries).then(async (err) => {
        console.log('GetResultSet putBatch success');
    }).catch((err) => {
        console.log('PutBatch putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    kvStore.getResultSet('localDeviceId', query).then((result) => {
        console.log('GetResultSet getResultSet success');
        resultSet = result;
    }).catch((err) => {
        console.log('GetResultSet getResultSet fail ' + JSON.stringify(err));
    });
    query.deviceId('localDeviceId');
    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));
    });

}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4644 4645


A
asfasdff 已提交
4646
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4647

4648
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4649 4650 4651

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

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

Z
zengyawen 已提交
4654
**参数**
A
asfasdff 已提交
4655

4656 4657
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4658
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的 KvStoreResultSet 对象。   |
4659
| callback   |AsyncCallback&lt;void&gt;                 | 是    |回调函数。    |
A
asfasdff 已提交
4660

Z
zengyawen 已提交
4661
**示例**
A
asfasdff 已提交
4662

G
ge-yafang 已提交
4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678
```
let kvStore;
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 已提交
4679 4680


A
asfasdff 已提交
4681
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4682

4683
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
4684 4685 4686

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

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

Z
zengyawen 已提交
4689
**参数**
A
asfasdff 已提交
4690

4691 4692
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4693
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的 KvStoreResultSet 对象。   |
A
asfasdff 已提交
4694

Z
zengyawen 已提交
4695
**返回值**
A
asfasdff 已提交
4696

4697 4698 4699
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4700

Z
zengyawen 已提交
4701
**示例**
A
asfasdff 已提交
4702

G
ge-yafang 已提交
4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716
```
let kvStore;
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 已提交
4717 4718


A
asfasdff 已提交
4719
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4720

4721
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
4722 4723 4724

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

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

Z
zengyawen 已提交
4727
**参数**
A
asfasdff 已提交
4728

4729 4730
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4731
| query     |[Query](#query8)       | 是    |表示查询对象。    |
4732
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数,返回与指定 Query 对象匹配的结果数。    |
A
asfasdff 已提交
4733

Z
zengyawen 已提交
4734
**示例**
A
asfasdff 已提交
4735

G
ge-yafang 已提交
4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746
```
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'
A
asfasdff 已提交
4747 4748
            }
        }
G
ge-yafang 已提交
4749
        entries.push(entry);
A
asfasdff 已提交
4750
    }
G
ge-yafang 已提交
4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763
    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) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4764 4765


A
asfasdff 已提交
4766
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4767

4768
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4769 4770 4771

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

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

Z
zengyawen 已提交
4774
**参数**
A
asfasdff 已提交
4775

4776 4777
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4778
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
4779

Z
zengyawen 已提交
4780
**返回值**
A
asfasdff 已提交
4781

4782 4783 4784
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;number&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4785

Z
zengyawen 已提交
4786
**示例**
A
asfasdff 已提交
4787

G
ge-yafang 已提交
4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798
```
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'
A
asfasdff 已提交
4799 4800
            }
        }
G
ge-yafang 已提交
4801
        entries.push(entry);
A
asfasdff 已提交
4802
    }
G
ge-yafang 已提交
4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819
    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));
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4820 4821


A
asfasdff 已提交
4822
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4823

A
asfasdff 已提交
4824
getResultSize(deviceId: string, query: Query, callback: AsyncCallback&lt;number&gt;): void;
A
asfasdff 已提交
4825 4826 4827

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

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

Z
zengyawen 已提交
4830
**参数**
A
asfasdff 已提交
4831

4832 4833 4834
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4835
| query     |[Query](#query8)       | 是    |表示查询对象。    |
4836
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数,返回与指定 Query 对象匹配的结果数。    |
A
asfasdff 已提交
4837

Z
zengyawen 已提交
4838
**示例**
A
asfasdff 已提交
4839

G
ge-yafang 已提交
4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850
```
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'
A
asfasdff 已提交
4851 4852
            }
        }
G
ge-yafang 已提交
4853
        entries.push(entry);
A
asfasdff 已提交
4854
    }
G
ge-yafang 已提交
4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866
    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) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4867 4868


A
asfasdff 已提交
4869
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
4870

4871
getResultSize(deviceId: string, query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
4872 4873 4874

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

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

Z
zengyawen 已提交
4877
**参数**
A
asfasdff 已提交
4878

4879 4880 4881
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4882
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
4883

Z
zengyawen 已提交
4884
**返回值**
A
asfasdff 已提交
4885

4886 4887 4888
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;number&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4889

Z
zengyawen 已提交
4890
**示例**
A
asfasdff 已提交
4891

G
ge-yafang 已提交
4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902
```
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'
A
asfasdff 已提交
4903 4904
            }
        }
G
ge-yafang 已提交
4905
        entries.push(entry);
A
asfasdff 已提交
4906
    }
G
ge-yafang 已提交
4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922
    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));
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
4923 4924


A
asfasdff 已提交
4925
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
4926

4927
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
4928 4929 4930

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

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

Z
zengyawen 已提交
4933
**参数**
A
asfasdff 已提交
4934

4935 4936 4937 4938
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |标识要删除其数据的设备。  |
| callback  |AsyncCallback&lt;void&gt;    | 是    |回调函数。    |
A
asfasdff 已提交
4939

Z
zengyawen 已提交
4940
**示例**
A
asfasdff 已提交
4941

G
ge-yafang 已提交
4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958
```
let kvStore;
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';
        await kvStore.removeDeviceData(deviceid, async function (err,data) {
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
                await kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) {
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
4959
        });
G
ge-yafang 已提交
4960 4961 4962 4963 4964
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
4965 4966


A
asfasdff 已提交
4967
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
4968

4969
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
4970 4971 4972

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

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

Z
zengyawen 已提交
4975
**参数**
A
asfasdff 已提交
4976

4977 4978 4979
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要删除其数据的设备。  |
A
asfasdff 已提交
4980

Z
zengyawen 已提交
4981
**返回值**
A
asfasdff 已提交
4982

4983 4984 4985
| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;void&gt; |Promise实例,用于获取异步返回结果。|
A
asfasdff 已提交
4986

Z
zengyawen 已提交
4987
**示例**
A
asfasdff 已提交
4988

G
ge-yafang 已提交
4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013
```
let kvStore;
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) => {
        console.log('removeDeviceData success');
    }).catch((err) => {
        console.log('removeDeviceData fail ' + JSON.stringify(err));
    });
    kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
        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 已提交
5014 5015


A
asfasdff 已提交
5016
### sync<sup>8+</sup> ###
A
asfasdff 已提交
5017

5018
sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void
A
asfasdff 已提交
5019

A
asfasdff 已提交
5020
在手动模式下,触发数据库同步,此方法为同步方法。
Z
zuojiangjiang 已提交
5021
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
A
asfasdff 已提交
5022

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

Z
zengyawen 已提交
5025
**参数**
A
asfasdff 已提交
5026

5027 5028 5029 5030 5031 5032
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIdList    |string[]               | 是    |需要同步DeviceKvStore数据库的设备ID列表。 |
| mode            |[SyncMode](#syncmode)  | 是    |表示同步方式,PUSH、PULL或PUSH_PULL。  |
| allowedDelayMs  |number                 | 否    |可选参数,允许延时时间,单位:ms(毫秒)。  |

Z
zengyawen 已提交
5033
**示例**
A
asfasdff 已提交
5034

G
ge-yafang 已提交
5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052
```
let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        kvStore.sync(devices, mode);
    });
}catch(e) {
    console.log('Sync e' + e);
}
```
A
asfasdff 已提交
5053

A
asfasdff 已提交
5054
### on<sup>8+</sup> ###
A
asfasdff 已提交
5055

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

A
asfasdff 已提交
5058
订阅同步完成事件回调通知,该方法为同步方法。
A
asfasdff 已提交
5059

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

Z
zengyawen 已提交
5062
**参数**
A
asfasdff 已提交
5063

5064 5065 5066
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| event    |'syncComplete'      | 是    |同步完成时触发的事件名。 |
Z
zengyawen 已提交
5067
| syncCallback            |Callback<Array&lt;<[string, number]&gt; | 是    |用于向调用方发送同步结果的回调。  |
A
asfasdff 已提交
5068

Z
zengyawen 已提交
5069
**示例**
Z
zengyawen 已提交
5070

G
ge-yafang 已提交
5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086
```
const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
const VALUE_TEST_FLOAT_ELEMENT = 321.12;
try {
    kvStore.on('syncComplete', function (data) {
        console.log('syncComplete ' + data)
    });
    kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
        console.log('syncComplete put success');
    }).catch((error) => {
        console.log('syncComplete put fail ' + error);
    });
}catch(e) {
    console.log('syncComplete put e ' + e);
}
```
A
asfasdff 已提交
5087 5088


A
asfasdff 已提交
5089
### off<sup>8+</sup> ###
A
asfasdff 已提交
5090

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

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

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

Z
zengyawen 已提交
5097
**参数**
A
asfasdff 已提交
5098

5099 5100 5101
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| event         |'syncComplete'                           | 是    |同步完成时触发的事件名。 |
Z
zengyawen 已提交
5102
| syncCallback  |Callback<Array&lt;[string, number]&gt;&gt; | 否    |用于向调用方发送同步结果的回调。  |
5103

Z
zengyawen 已提交
5104
**示例**
A
asfasdff 已提交
5105

G
ge-yafang 已提交
5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117
```
let kvStore;
try {
    const func = function (data) {
        console.log('syncComplete ' + data)
    };
    kvStore.on('syncComplete', func);
    kvStore.off('syncComplete', func);
}catch(e) {
    console.log('syncComplete e ' + e);
}
```
A
asfasdff 已提交
5118 5119


5120
## SyncMode
Z
zengyawen 已提交
5121 5122 5123

用于指定同步模式。

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

5126 5127 5128 5129 5130
| 名称       | 默认值     | 说明                    |
| -----      | ------    | ----------------------- |
| PULL_ONLY  |0          |表示只能从远端拉取数据到本端。 |
| PUSH_ONLY  |1          |表示只能从本端推送数据到对端。 |
| PUSH_PULL  |2          |表示从本端推送数据到远端,然后从远端拉取数据到本端。 |