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

G
ge-yafang 已提交
3 4 5 6 7 8 9 10 11 12
分布式数据管理为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式数据各个接口,应用程序可将数据保存到分布式数据库中,并可对分布式数据库中的数据进行增加、删除、修改、查询、同步等操作。

该模块提供以下分布式数据管理相关的常用功能:

- [KVManager](#kvmanager):数据管理实例,用于获取KVStore的相关信息。
- [KvStoreResultSet<sup>8+</sup>](#kvstoreresultset8):提供获取KVStore数据库结果集的相关方法,包括查询和移动数据读取位置等。
- [Query<sup>8+</sup>](#query8):使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。
- [KVStore](#kvstore):KVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅数据同步完成的方法。
- [SingleKVStore](#singlekvstore):单版本分布式数据库,继承自[KVStore](#kvstore),不对数据所属设备进行区分,提供查询数据和同步数据的方法。
- [DeviceKVStore<sup>8+</sup>](#devicekvstore8):设备协同数据库,继承自[KVStore](#kvstore),以设备维度对数据进行区分,提供查询数据和同步数据的方法。
G
ge-yafang 已提交
13

G
ge-yafang 已提交
14
>**说明:** 
G
ge-yafang 已提交
15
>
A
asfasdff 已提交
16
>本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
17

18

19
## 导入模块
Z
zengyawen 已提交
20

G
ge-yafang 已提交
21
```js
Z
zengyawen 已提交
22 23 24 25
import distributedData from '@ohos.data.distributedData';
```


26
## distributedData.createKVManager
Z
zengyawen 已提交
27

A
asfasdff 已提交
28
createKVManager(config: KVManagerConfig, callback: AsyncCallback&lt;KVManager&gt;): void
Z
zengyawen 已提交
29

G
ge-yafang 已提交
30
创建一个KVManager对象实例,用于管理数据库对象,使用callback异步回调。
Z
zengyawen 已提交
31

G
ge-yafang 已提交
32
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
33

G
ge-yafang 已提交
34
**参数:**
35 36 37 38

| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| config | [KVManagerConfig](#kvmanagerconfig) | 是  | 提供KVManager实例的配置信息,包括调用方的包名和用户信息。 |
G
ge-yafang 已提交
39
| callback | AsyncCallback&lt;[KVManager](#kvmanager)&gt; | 是  | 回调函数。返回创建的KVManager对象实例。 |
A
asfasdff 已提交
40

G
ge-yafang 已提交
41
**示例:**
G
ge-yafang 已提交
42
```js
G
ge-yafang 已提交
43 44
let kvManager;
try {
W
wangkai 已提交
45
    var contextmock = featureAbility.getContext();
G
ge-yafang 已提交
46
    const kvManagerConfig = {
W
wangkai 已提交
47
        context : contextmock,    
G
ge-yafang 已提交
48 49 50 51
        bundleName : 'com.example.datamanagertest',
        userInfo : {
            userId : '0',
            userType : distributedData.UserType.SAME_USER_ID
A
asfasdff 已提交
52 53
        }
    }
G
ge-yafang 已提交
54 55 56 57 58 59 60 61 62 63 64 65
    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 已提交
66

67
## distributedData.createKVManager
A
asfasdff 已提交
68

A
asfasdff 已提交
69
createKVManager(config: KVManagerConfig): Promise&lt;KVManager&gt;
Z
zengyawen 已提交
70

G
ge-yafang 已提交
71
创建一个KVManager对象实例,用于管理数据库对象,使用Promise异步回调。
Z
zengyawen 已提交
72

G
ge-yafang 已提交
73
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
74

G
ge-yafang 已提交
75
**参数:**
Z
zengyawen 已提交
76

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

G
ge-yafang 已提交
81
**返回值:**
A
asfasdff 已提交
82

83 84
| 类型 | 说明 |
| -------- | -------- |
G
ge-yafang 已提交
85
| Promise&lt;[KVManager](#kvmanager)&gt; | Promise对象。返回创建的KVManager对象实例。 |
Z
zengyawen 已提交
86

G
ge-yafang 已提交
87
**示例:**
A
asfasdff 已提交
88

G
ge-yafang 已提交
89
```js
G
ge-yafang 已提交
90 91
let kvManager;
try {
W
wangkai 已提交
92
    var contextmock = featureAbility.getContext();
G
ge-yafang 已提交
93
    const kvManagerConfig = {
W
wangkai 已提交
94
        context : contextmock, 
G
ge-yafang 已提交
95 96 97 98
        bundleName : 'com.example.datamanagertest',
        userInfo : {
            userId : '0',
            userType : distributedData.UserType.SAME_USER_ID
A
asfasdff 已提交
99 100
        }
    }
G
ge-yafang 已提交
101 102 103 104 105 106 107 108 109 110
    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 已提交
111

112
## KVManagerConfig
Z
zengyawen 已提交
113 114 115

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

G
ge-yafang 已提交
116
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
117

118 119
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
W
wangkai 已提交
120
| context | Context | 是 | 应用程序或功能的上下文。 <br>API version 9之前的Context定义见[Context](js-apis-Context.md)<br>API version 9及之后的Context定义见[Context](js-apis-ability-context.md)。|
121 122 123 124
| userInfo | [UserInfo](#userinfo) | 是  | 调用方的用户信息。 |
| bundleName | string | 是  | 调用方的包名。 |

## UserInfo
Z
zengyawen 已提交
125 126 127

用户信息。

G
ge-yafang 已提交
128
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
129

130 131 132 133 134 135 136
| 名称 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| userId | string | 是  | 指示要设置的用户ID。 |
| userType | [UserType](#usertype) | 是  | 指示要设置的用户类型。 |


## UserType
Z
zengyawen 已提交
137

G
ge-yafang 已提交
138
用户类型枚举。
Z
zengyawen 已提交
139

G
ge-yafang 已提交
140
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
141

G
ge-yafang 已提交
142
| 名称 | 值 | 说明 |
143 144 145 146 147
| ----- | ------ | ------ |
| SAME_USER_ID | 0 | 使用同一帐户登录不同设备的用户。 |


## KVManager
Z
zengyawen 已提交
148

G
ge-yafang 已提交
149
数据管理实例,用于获取KVStore的相关信息。在调用KVManager的方法前,需要先通过[createKVManager](#distributeddatacreatekvmanager)构建一个KVManager实例。
Z
zengyawen 已提交
150

151
### getKVStore
Z
zengyawen 已提交
152

153
getKVStore&lt;T extends KVStore&gt;(storeId: string, options: Options, callback: AsyncCallback&lt;T&gt;): void
Z
zengyawen 已提交
154

G
ge-yafang 已提交
155
通过指定Options和storeId,创建并获取KVStore数据库,使用callback异步回调。
Z
zengyawen 已提交
156

G
ge-yafang 已提交
157
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
158

G
ge-yafang 已提交
159
**参数:**
A
asfasdff 已提交
160

161 162 163 164
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| storeId | string | 是  | 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
| options | [Options](#options) | 是  | 创建KVStore实例的配置信息。 |
G
ge-yafang 已提交
165
| callback | AsyncCallback&lt;T&gt;&lt;T extends [KVStore](#kvstore)&gt; | 是  | 回调函数。返回创建的KVStore数据库实例。 |
A
asfasdff 已提交
166

G
ge-yafang 已提交
167
**示例:**
A
asfasdff 已提交
168

G
ge-yafang 已提交
169
```js
G
ge-yafang 已提交
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
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 已提交
193 194


195
### getKVStore
A
asfasdff 已提交
196

A
asfasdff 已提交
197
getKVStore&lt;T extends KVStore&gt;(storeId: string, options: Options): Promise&lt;T&gt;
Z
zengyawen 已提交
198

G
ge-yafang 已提交
199
通过指定Options和storeId,创建并获取KVStore数据库,使用Promise异步回调。
Z
zengyawen 已提交
200

G
ge-yafang 已提交
201
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
W
wufengshan 已提交
202

G
ge-yafang 已提交
203
**参数:**
A
asfasdff 已提交
204

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


G
ge-yafang 已提交
211
**返回值:**
A
asfasdff 已提交
212

213 214
| 类型                                    | 说明        |
| -------------------------------------- | ------------------------ |
G
ge-yafang 已提交
215
| Promise&lt;T&gt;&lt;T extends [KVStore](#kvstore)&gt; | Promise对象。返回创建的KVStore数据库实例。 |
216

G
ge-yafang 已提交
217
**示例:**
218

G
ge-yafang 已提交
219
```js
G
ge-yafang 已提交
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
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 已提交
241

A
asfasdff 已提交
242
### closeKVStore<sup>8+</sup> ###
A
asfasdff 已提交
243

244
closeKVStore(appId: string, storeId: string, kvStore: KVStore, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
245

G
ge-yafang 已提交
246
通过storeId的值关闭指定的KVStore数据库,使用callback异步回调。
A
asfasdff 已提交
247

G
ge-yafang 已提交
248
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
249

G
ge-yafang 已提交
250
**参数:**
251 252 253 254 255 256


| 参数名   | 参数类型              | 必填 | 说明         |
| ------- | -----------------   | ---- | --------------------------- |
| appId    | string              | 是   | 所调用数据库方的包名。         |
| storeId  | string  | 是   | 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
G
ge-yafang 已提交
257
| kvStore  | [KVStore](#kvstore) | 是   | 要关闭的KVStore数据库。     |
G
ge-yafang 已提交
258
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。 |
A
asfasdff 已提交
259

G
ge-yafang 已提交
260
**示例:**
A
asfasdff 已提交
261

G
ge-yafang 已提交
262
```js
G
ge-yafang 已提交
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277
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;
W
wangkai 已提交
278
    kvManager.closeKVStore('appId', 'storeId', kvStore, function (err, data) {
G
ge-yafang 已提交
279 280 281 282 283 284 285 286
        console.log('closeKVStore success');
    });
    });
} catch (e) {
    console.log('closeKVStore e ' + e);
}
```

A
asfasdff 已提交
287

A
asfasdff 已提交
288
### closeKVStore<sup>8+</sup> ###
A
asfasdff 已提交
289

290
closeKVStore(appId: string, storeId: string, kvStore: KVStore): Promise&lt;void&gt;
A
asfasdff 已提交
291

G
ge-yafang 已提交
292
通过storeId的值关闭指定的KVStore数据库,使用Promise异步回调。
A
asfasdff 已提交
293

G
ge-yafang 已提交
294
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
295

G
ge-yafang 已提交
296
**参数:**
A
asfasdff 已提交
297

298 299 300 301
| 参数名  | 参数类型 | 必填  | 说明        |
| -----  | ------  | ---- | ----------------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。            |
| storeId | string | 是   | 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
G
ge-yafang 已提交
302
| kvStore | [KVStore](#kvstore)  | 是   | 要关闭的KVStore数据库。        |
A
asfasdff 已提交
303

G
ge-yafang 已提交
304
**返回值:**
A
asfasdff 已提交
305

306 307
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
308
| Promise\<void> | 无返回结果的Promise对象。 |
A
asfasdff 已提交
309

G
ge-yafang 已提交
310
**示例:**
A
asfasdff 已提交
311

G
ge-yafang 已提交
312
```js
G
ge-yafang 已提交
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327
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;
W
wangkai 已提交
328
    kvManager.closeKVStore('appId', 'storeId', kvStore).then(() => {
G
ge-yafang 已提交
329 330 331 332 333 334 335 336 337 338 339
        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 已提交
340 341


A
asfasdff 已提交
342
### deleteKVStore<sup>8+</sup> ###
A
asfasdff 已提交
343

344
deleteKVStore(appId: string, storeId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
345

G
ge-yafang 已提交
346
通过storeId的值删除指定的KVStore数据库,使用callback异步回调。
A
asfasdff 已提交
347

G
ge-yafang 已提交
348
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
349

G
ge-yafang 已提交
350
**参数:**
A
asfasdff 已提交
351

352 353 354 355
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是   | 所调用数据库方的包名。     |
| storeId | string | 是   | 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH](#constants)。 |
G
ge-yafang 已提交
356
| callback | AsyncCallback&lt;void&gt;  | 是   | 回调函数。 |
357

G
ge-yafang 已提交
358
**示例:**
A
asfasdff 已提交
359

G
ge-yafang 已提交
360
```js
G
ge-yafang 已提交
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375
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;
W
wangkai 已提交
376
        kvManager.deleteKVStore('appId', 'storeId', function (err, data) {
G
ge-yafang 已提交
377
            console.log('deleteKVStore success');
A
asfasdff 已提交
378
        });
G
ge-yafang 已提交
379 380 381 382 383
    });
} catch (e) {
    console.log('DeleteKVStore e ' + e);
}
```
A
asfasdff 已提交
384

A
asfasdff 已提交
385
### deleteKVStore<sup>8+</sup> ###
A
asfasdff 已提交
386

387
deleteKVStore(appId: string, storeId: string): Promise&lt;void&gt;
A
asfasdff 已提交
388

G
ge-yafang 已提交
389
通过storeId的值删除指定的KVStore数据库,使用Promise异步回调。
A
asfasdff 已提交
390

G
ge-yafang 已提交
391
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
392

G
ge-yafang 已提交
393
**参数:**
Z
zengyawen 已提交
394

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


G
ge-yafang 已提交
401
**返回值:**
A
asfasdff 已提交
402

403 404
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
405
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
A
asfasdff 已提交
406

G
ge-yafang 已提交
407
**示例:**
A
asfasdff 已提交
408

G
ge-yafang 已提交
409
```js
G
ge-yafang 已提交
410 411 412 413 414 415 416 417 418 419 420 421
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 {
G
ge-yafang 已提交
422
    kvManager.getKVStore('storeId', options).then(async (store) => {
G
ge-yafang 已提交
423 424
        console.log('getKVStore success');
        kvStore = store;
W
wangkai 已提交
425
        kvManager.deleteKVStore('appId', 'storeId').then(() => {
G
ge-yafang 已提交
426
            console.log('deleteKVStore success');
A
asfasdff 已提交
427
        }).catch((err) => {
G
ge-yafang 已提交
428
            console.log('deleteKVStore err ' + JSON.stringify(err));
A
asfasdff 已提交
429
        });
G
ge-yafang 已提交
430 431 432 433 434 435 436
    }).catch((err) => {
        console.log('getKVStore err ' + JSON.stringify(err));
    });
} catch (e) {
    console.log('deleteKVStore e ' + e);
}
```
A
asfasdff 已提交
437 438


A
asfasdff 已提交
439
### getAllKVStoreId<sup>8+</sup> ###
A
asfasdff 已提交
440

441
getAllKVStoreId(appId: string, callback: AsyncCallback&lt;string[]&gt;): void
A
asfasdff 已提交
442

G
ge-yafang 已提交
443
获取所有通过[getKVStore](#getkvstore)方法创建的且没有调用[deleteKVStore](#deletekvstore8)方法删除的KVStore数据库的storeId,使用callback异步回调。
A
asfasdff 已提交
444

G
ge-yafang 已提交
445
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
446

G
ge-yafang 已提交
447
**参数:**
A
asfasdff 已提交
448

449 450 451
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
G
ge-yafang 已提交
452
| callback | AsyncCallback&lt;string[]&gt; | 是   |回调函数。返回所有创建的KvStore数据库的storeId。 |
A
asfasdff 已提交
453

G
ge-yafang 已提交
454
**示例:**
A
asfasdff 已提交
455

G
ge-yafang 已提交
456
```js
G
ge-yafang 已提交
457 458 459 460 461 462 463 464 465 466
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 已提交
467 468


A
asfasdff 已提交
469
### getAllKVStoreId<sup>8+</sup> ###
A
asfasdff 已提交
470

471
getAllKVStoreId(appId: string): Promise&lt;string[]&gt;
A
asfasdff 已提交
472

G
ge-yafang 已提交
473
获取所有通过[getKVStore](#getkvstore)方法创建的且没有调用[deleteKVStore](#deletekvstore8)方法删除的KVStore数据库的storeId,使用Promise异步回调。
A
asfasdff 已提交
474

G
ge-yafang 已提交
475
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
476

G
ge-yafang 已提交
477
**参数:**
A
asfasdff 已提交
478

479 480 481
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| appId  | string  | 是    | 所调用数据库方的包名。     |
A
asfasdff 已提交
482 483


G
ge-yafang 已提交
484
**返回值:**
Z
zengyawen 已提交
485

486 487
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
488
| Promise&lt;string[]&gt;| Promise对象。返回所有创建的KvStore数据库的storeId。 |
A
asfasdff 已提交
489

G
ge-yafang 已提交
490
**示例:**
A
asfasdff 已提交
491

G
ge-yafang 已提交
492
```js
G
ge-yafang 已提交
493 494 495 496 497 498 499 500 501 502 503 504 505
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 已提交
506 507


G
ge-yafang 已提交
508
### on('distributedDataServiceDie')<sup>8+</sup> ###
A
asfasdff 已提交
509

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

G
ge-yafang 已提交
512
订阅服务状态变更通知。
A
asfasdff 已提交
513

G
ge-yafang 已提交
514
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
515

G
ge-yafang 已提交
516
**参数:**
A
asfasdff 已提交
517

518 519
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
520
| event  | string | 是    | 订阅的事件名,固定为'distributedDataServiceDie',即服务状态变更事件。 |
G
ge-yafang 已提交
521
| deathCallback  | Callback&lt;void&gt;  | 是    | 回调函数。 |
522

G
ge-yafang 已提交
523
**示例:**
A
asfasdff 已提交
524

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


G
ge-yafang 已提交
540
### off('distributedDataServiceDie')<sup>8+</sup> ###
A
asfasdff 已提交
541

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

G
ge-yafang 已提交
544
取消订阅服务状态变更通知。
A
asfasdff 已提交
545

G
ge-yafang 已提交
546
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
547

G
ge-yafang 已提交
548
**参数:**
A
asfasdff 已提交
549

550 551
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
552
| event  | string | 是    | 取消订阅的事件名,固定为'distributedDataServiceDie',即服务状态变更事件。 |
G
ge-yafang 已提交
553
| deathCallback  | Callback&lt;void&gt;  | 否    | 回调函数。 |
Z
zengyawen 已提交
554

A
asfasdff 已提交
555

G
ge-yafang 已提交
556
**示例:**
A
asfasdff 已提交
557

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

572
## Options
Z
zengyawen 已提交
573 574 575

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

G
ge-yafang 已提交
576
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
577

578 579 580 581 582
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| createIfMissing  | boolean | 否 | 当数据库文件不存在时是否创建数据库,默认创建。     |
| encrypt  | boolean | 否 |设置数据库文件是否加密,默认不加密。     |
| backup  | boolean | 否 |设置数据库文件是否备份,默认备份。     |
G
ge-yafang 已提交
583
| autoSync  | boolean | 否 |设置数据库文件是否自动同步,默认不自动同步。<br>**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC     |
584 585
| kvStoreType | [KVStoreType](#kvstoretype) | 否 |设置要创建的数据库类型,默认为多设备协同数据库。 |
| securityLevel | [SecurityLevel](#securitylevel) | 否 |设置数据库安全级别,默认不设置安全级别。  |
Z
zengyawen 已提交
586
| schema<sup>8+</sup> | [Schema](#schema8) | 否 | 设置定义存储在数据库中的值。 |
587 588 589


## KVStoreType
Z
zengyawen 已提交
590

G
ge-yafang 已提交
591
KVStore数据库类型枚举。
Z
zengyawen 已提交
592

593

G
ge-yafang 已提交
594
| 名称  | 值 | 说明                    |
595
| ---   | ----  | ----------------------- |
596 597 598
| DEVICE_COLLABORATION  | 0 | 表示多设备协同数据库。<br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore   |
| SINGLE_VERSION  | 1 | 表示单版本数据库。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core |
| MULTI_VERSION   | 2 | 表示多版本数据库。此类型当前不允许使用。 <br>**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore |
599 600 601


## SecurityLevel
Z
zengyawen 已提交
602

G
ge-yafang 已提交
603
数据库的安全级别枚举。
Z
zengyawen 已提交
604

G
ge-yafang 已提交
605
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
606

G
ge-yafang 已提交
607
| 名称  | 值 | 说明                    |
608 609
| ---   | ----  | ----------------------- |
| NO_LEVEL  | 0 | 表示数据库不设置安全级别。   |
G
ge-yafang 已提交
610 611 612 613 614
| S0  | 1 | 表示数据库的安全级别为公共级别。 |
| S1  | 2 | 表示数据库的安全级别为低级别,当数据泄露时会产生较低影响。例如,包含壁纸等系统数据的数据库。 |
| S2  | 3 | 表示数据库的安全级别为中级别,当数据泄露时会产生较大影响。例如,包含录音、视频等用户生成数据或通话记录等信息的数据库。 |
| S3  | 5 | 表示数据库的安全级别为高级别,当数据泄露时会产生重大影响。例如,包含用户运动、健康、位置等信息的数据库。 |
| S4  | 6 | 表示数据库的安全级别为关键级别,当数据泄露时会产生严重影响。例如,包含认证凭据、财务数据等信息的数据库。 |
615 616 617


## Constants
Z
zengyawen 已提交
618 619 620

KVStore常量。

G
ge-yafang 已提交
621
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
622

G
ge-yafang 已提交
623
| 名称  | 值 | 说明                    |
624
| ---   | ----  | ----------------------- |
G
ge-yafang 已提交
625
| MAX_KEY_LENGTH  | 1024 | 数据库中Key允许的最大长度,单位字节。  |
626
| MAX_VALUE_LENGTH  | 4194303 | 数据库中Value允许的最大长度,单位字节。  |
G
ge-yafang 已提交
627
| MAX_KEY_LENGTH_DEVICE  | 896 | 最大设备密钥长度,单位字节。 |
628
| MAX_STORE_ID_LENGTH  | 128 | 数据库标识符允许的最大长度,单位字节。  |
G
ge-yafang 已提交
629 630
| MAX_QUERY_LENGTH  | 512000 | 最大查询长度,单位字节。 |
| MAX_BATCH_SIZE  | 128 | 最大批处理操作数量。 |
A
asfasdff 已提交
631

A
asfasdff 已提交
632
## Schema<sup>8+</sup> ##
A
asfasdff 已提交
633

G
ge-yafang 已提交
634
表示数据库模式,可以在创建或打开数据库时创建Schema对象并将它们放入[Options](#options)中。
A
asfasdff 已提交
635

G
ge-yafang 已提交
636
**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
A
asfasdff 已提交
637

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

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

constructor()

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

G
ge-yafang 已提交
651
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
652

653
## FieldNode<sup>8+</sup> ##
A
asfasdff 已提交
654 655 656

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

G
ge-yafang 已提交
657
**系统能力:** SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
658

W
wufengshan 已提交
659
| 名称  | 类型 | 说明                    |
660
| ---   | ----  | ----------------------- |
W
wufengshan 已提交
661
| nullable<sup>8+</sup>  | boolean | 表示数据库字段是否可以为空。   |
Z
zengyawen 已提交
662
| default<sup>8+</sup>  | string | 表示Fieldnode的默认值。 |
G
ge-yafang 已提交
663
| type<sup>8+</sup>  | number | 表示指定节点对应数据类型的值。 |
664 665 666 667 668 669 670

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

constructor(name: string)

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

G
ge-yafang 已提交
671
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
672

G
ge-yafang 已提交
673
**参数:**
674

Z
zengyawen 已提交
675 676 677
| 参数名 | 参数类型 | 必填 | 说明            |
| ------ | -------- | ---- | --------------- |
| name   | string   | 是   | FieldNode的值。 |
678

A
asfasdff 已提交
679
### appendChild<sup>8+</sup> ###
A
asfasdff 已提交
680

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

G
ge-yafang 已提交
683
在当前 FieldNode 中添加一个子节点。
A
asfasdff 已提交
684

G
ge-yafang 已提交
685
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。
686

G
ge-yafang 已提交
687
**参数:**
A
asfasdff 已提交
688

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

G
ge-yafang 已提交
693
**返回值:**
A
asfasdff 已提交
694

695 696
| 类型          | 说明            |
| ------------- | -------------- |
G
ge-yafang 已提交
697
| boolean |返回true表示子节点成功添加到FieldNode;返回false则表示操作失败。 |
A
asfasdff 已提交
698

G
ge-yafang 已提交
699
**示例:**
A
asfasdff 已提交
700

G
ge-yafang 已提交
701
```js
G
ge-yafang 已提交
702 703 704 705 706 707 708 709 710
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);
W
wangkai 已提交
711
    console.log("appendNode " + JSON.stringify(node));
G
ge-yafang 已提交
712 713 714 715 716 717 718 719
    child1 = null;
    child2 = null;
    child3 = null;
    node = null;
} catch (e) {
    console.log("AppendChild " + e);
}
```
A
asfasdff 已提交
720 721


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

G
ge-yafang 已提交
724 725 726
提供获取KVStore数据库结果集的相关方法,包括查询和移动数据读取位置等。

在调用KvStoreResultSet的方法前,需要先通过[getKVStore](#getkvstore)构建一个KVStore实例。
A
asfasdff 已提交
727

728

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

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

G
ge-yafang 已提交
733
获取结果集中的总行数。
A
asfasdff 已提交
734

G
ge-yafang 已提交
735
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
736

G
ge-yafang 已提交
737
**返回值:**
A
asfasdff 已提交
738

739 740
| 类型   | 说明               |
| ------ | --------------    |
G
ge-yafang 已提交
741
| number |返回数据的总行数。          |
A
asfasdff 已提交
742

G
ge-yafang 已提交
743
**示例:**
A
asfasdff 已提交
744

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

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

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

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

G
ge-yafang 已提交
768
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
769

G
ge-yafang 已提交
770
**返回值:**
A
asfasdff 已提交
771

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

G
ge-yafang 已提交
776
**示例:**
A
asfasdff 已提交
777

G
ge-yafang 已提交
778
```js
G
ge-yafang 已提交
779 780 781 782
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
783
        console.log('getResultSet succeeed.');
G
ge-yafang 已提交
784 785
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
786
        console.log('getResultSet failed:ed: ' + err);
G
ge-yafang 已提交
787 788
    });
    const position = resultSet.getPosition();
G
ge-yafang 已提交
789
    console.log("getPosition succeed:" + position);
G
ge-yafang 已提交
790
} catch (e) {
G
ge-yafang 已提交
791
    console.log("getPosition failed: " + e);
G
ge-yafang 已提交
792 793
}
```
A
asfasdff 已提交
794 795


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

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

G
ge-yafang 已提交
800
将读取位置移动到第一行。如果结果集为空,则返回false。
A
asfasdff 已提交
801

G
ge-yafang 已提交
802
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
803

G
ge-yafang 已提交
804
**返回值:**
A
asfasdff 已提交
805

806 807
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
808
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
809

G
ge-yafang 已提交
810
**示例:**
A
asfasdff 已提交
811

G
ge-yafang 已提交
812
```js
G
ge-yafang 已提交
813 814 815 816
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
817
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
818 819
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
820
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
821
    });
G
ge-yafang 已提交
822 823
    const moved1 = resultSet.moveToFirst();
    console.log("moveToFirst succeed: " + moved1);
G
ge-yafang 已提交
824
} catch (e) {
G
ge-yafang 已提交
825
    console.log("moveToFirst failed " + e);
G
ge-yafang 已提交
826 827
}
```
A
asfasdff 已提交
828 829


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

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

G
ge-yafang 已提交
834
将读取位置移动到最后一行。如果结果集为空,则返回false。
A
asfasdff 已提交
835

G
ge-yafang 已提交
836
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
837

G
ge-yafang 已提交
838
**返回值:**
A
asfasdff 已提交
839

840 841
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
842
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
843

G
ge-yafang 已提交
844
**示例:**
A
asfasdff 已提交
845

G
ge-yafang 已提交
846
```js
G
ge-yafang 已提交
847 848 849 850
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
851
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
852 853
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
854
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
855
    });
G
ge-yafang 已提交
856 857
    const moved2 = resultSet.moveToLast();
    console.log("moveToLast succeed:" + moved2);
G
ge-yafang 已提交
858
} catch (e) {
G
ge-yafang 已提交
859
    console.log("moveToLast failed: " + e);
G
ge-yafang 已提交
860 861
}
```
A
asfasdff 已提交
862 863


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

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

G
ge-yafang 已提交
868
将读取位置移动到下一行。如果结果集为空,则返回false。
A
asfasdff 已提交
869

G
ge-yafang 已提交
870
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
871

G
ge-yafang 已提交
872
**返回值:**
A
asfasdff 已提交
873

874 875
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
876
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
877

G
ge-yafang 已提交
878
**示例:**
A
asfasdff 已提交
879

G
ge-yafang 已提交
880
```js
G
ge-yafang 已提交
881 882 883 884
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
885
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
886 887
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
888
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
889
    });
G
ge-yafang 已提交
890 891
    const moved3 = resultSet.moveToNext();
    console.log("moveToNext succeed: " + moved3);
G
ge-yafang 已提交
892
} catch (e) {
G
ge-yafang 已提交
893
    console.log("moveToNext failed: " + e);
G
ge-yafang 已提交
894 895
}
```
A
asfasdff 已提交
896 897


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

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

G
ge-yafang 已提交
902
将读取位置移动到上一行。如果结果集为空,则返回false。
A
asfasdff 已提交
903

G
ge-yafang 已提交
904
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
905

G
ge-yafang 已提交
906
**返回值:**
A
asfasdff 已提交
907

908 909
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
910
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
911

G
ge-yafang 已提交
912
**示例:**
A
asfasdff 已提交
913

G
ge-yafang 已提交
914
```js
G
ge-yafang 已提交
915 916 917 918
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
919
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
920 921
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
922
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
923
    });
G
ge-yafang 已提交
924 925
    const moved4 = resultSet.moveToPrevious();
    console.log("moveToPrevious succeed:" + moved4);
G
ge-yafang 已提交
926
} catch (e) {
G
ge-yafang 已提交
927
    console.log("moveToPrevious failed: " + e);
G
ge-yafang 已提交
928 929
}
```
A
asfasdff 已提交
930 931


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

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

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

G
ge-yafang 已提交
938
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
939

G
ge-yafang 已提交
940
**参数:**
A
asfasdff 已提交
941

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

G
ge-yafang 已提交
946
**返回值:**
A
asfasdff 已提交
947

948 949
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
950
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
951

G
ge-yafang 已提交
952
**示例:**
A
asfasdff 已提交
953

G
ge-yafang 已提交
954
```js
G
ge-yafang 已提交
955 956 957 958
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
959
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
960 961
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
962
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
963
    });
G
ge-yafang 已提交
964 965
    const moved5 = resultSet.move();
    console.log("move succeed:" + moved5);
G
ge-yafang 已提交
966
} catch (e) {
G
ge-yafang 已提交
967
    console.log("move failed: " + e);
G
ge-yafang 已提交
968 969
}
```
A
asfasdff 已提交
970 971


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

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

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

G
ge-yafang 已提交
978
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
979

G
ge-yafang 已提交
980
**参数:**
A
asfasdff 已提交
981

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

G
ge-yafang 已提交
986
**返回值:**
A
asfasdff 已提交
987

988 989
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
990
| boolean |返回true表示操作成功;返回false则表示操作失败。   |
A
asfasdff 已提交
991

G
ge-yafang 已提交
992
**示例:**
A
asfasdff 已提交
993

G
ge-yafang 已提交
994
```js
G
ge-yafang 已提交
995 996 997 998
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
999
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1000 1001
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1002
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1003
    });
G
ge-yafang 已提交
1004 1005
    const moved6 = resultSet.moveToPosition();
    console.log("moveToPosition succeed: " + moved6);
G
ge-yafang 已提交
1006
} catch (e) {
G
ge-yafang 已提交
1007
    console.log("moveToPosition failed: " + e);
G
ge-yafang 已提交
1008 1009
}
```
A
asfasdff 已提交
1010 1011


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

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

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

G
ge-yafang 已提交
1018
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1019

G
ge-yafang 已提交
1020
**返回值:**
A
asfasdff 已提交
1021

1022 1023
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1024
| boolean |返回true表示读取位置为第一行;返回false表示读取位置不是第一行。   |
A
asfasdff 已提交
1025

G
ge-yafang 已提交
1026
**示例:**
A
asfasdff 已提交
1027

G
ge-yafang 已提交
1028
```js
G
ge-yafang 已提交
1029 1030 1031 1032
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1033
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1034 1035
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1036
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1037
    });
G
ge-yafang 已提交
1038 1039
    const isfirst = resultSet.isFirst();
    console.log("Check isFirst succeed:" + isfirst);
G
ge-yafang 已提交
1040
} catch (e) {
G
ge-yafang 已提交
1041
    console.log("Check isFirst failed: " + e);
G
ge-yafang 已提交
1042 1043
}
```
A
asfasdff 已提交
1044 1045


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

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

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

G
ge-yafang 已提交
1052
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1053

G
ge-yafang 已提交
1054
**返回值:**
A
asfasdff 已提交
1055

1056 1057
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1058
| boolean |返回true表示读取位置为最后一行;返回false表示读取位置不是最后一行。   |
A
asfasdff 已提交
1059

G
ge-yafang 已提交
1060
**示例:**
A
asfasdff 已提交
1061

G
ge-yafang 已提交
1062
```js
G
ge-yafang 已提交
1063 1064 1065 1066
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1067
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1068 1069
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1070
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1071
    });
G
ge-yafang 已提交
1072 1073
    const islast = resultSet.isLast();
    console.log("Check isLast succeed: " + islast);
G
ge-yafang 已提交
1074
} catch (e) {
G
ge-yafang 已提交
1075
    console.log("Check isLast failed: " + e);
G
ge-yafang 已提交
1076 1077
}
```
A
asfasdff 已提交
1078

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

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

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

G
ge-yafang 已提交
1085
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1086

G
ge-yafang 已提交
1087
**返回值:**
A
asfasdff 已提交
1088

1089 1090
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1091
| boolean |返回true表示读取位置在第一行之前;返回false表示读取位置不在第一行之前。  |
A
asfasdff 已提交
1092

G
ge-yafang 已提交
1093
**示例:**
A
asfasdff 已提交
1094

G
ge-yafang 已提交
1095
```js
G
ge-yafang 已提交
1096 1097 1098 1099
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1100
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1101 1102
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1103
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1104
    });
G
ge-yafang 已提交
1105 1106
    const isbeforefirst = resultSet.isBeforeFirst();
    console.log("Check isBeforeFirst succeed: " + isbeforefirst);
G
ge-yafang 已提交
1107
} catch (e) {
G
ge-yafang 已提交
1108
    console.log("Check isBeforeFirst failed: " + e);
G
ge-yafang 已提交
1109 1110
}
```
A
asfasdff 已提交
1111 1112


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

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

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

G
ge-yafang 已提交
1119
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1120

G
ge-yafang 已提交
1121
**返回值:**
A
asfasdff 已提交
1122

1123 1124
| 类型    | 说明               |
| ------  | --------------    |
G
ge-yafang 已提交
1125
| boolean |返回true表示读取位置在最后一行之后;返回false表示读取位置不在最后一行之后。  |
A
asfasdff 已提交
1126

G
ge-yafang 已提交
1127
**示例:**
A
asfasdff 已提交
1128

G
ge-yafang 已提交
1129
```js
G
ge-yafang 已提交
1130 1131 1132 1133
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1134
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1135 1136
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1137
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1138
    });
G
ge-yafang 已提交
1139 1140
    const isafterlast = resultSet.isAfterLast();
    console.log("Check isAfterLast succeed:" + isafterlast);
G
ge-yafang 已提交
1141
} catch (e) {
G
ge-yafang 已提交
1142
    console.log("Check isAfterLast failed: " + e);
G
ge-yafang 已提交
1143 1144
}
```
A
asfasdff 已提交
1145 1146


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

1149
getEntry(): Entry
A
asfasdff 已提交
1150

G
ge-yafang 已提交
1151
从当前位置获取对应的键值对。
A
asfasdff 已提交
1152

G
ge-yafang 已提交
1153
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1154

G
ge-yafang 已提交
1155
**返回值:**
A
asfasdff 已提交
1156

1157 1158
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1159
| [Entry](#entry) |返回键值对。|
A
asfasdff 已提交
1160

G
ge-yafang 已提交
1161
**示例:**
A
asfasdff 已提交
1162

G
ge-yafang 已提交
1163
```js
G
ge-yafang 已提交
1164 1165 1166 1167
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('batch_test_string_key').then((result) => {
G
ge-yafang 已提交
1168
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
1169 1170
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
1171
        console.log('getResultSet failed: ' + err);
G
ge-yafang 已提交
1172 1173
    });
    const entry  = resultSet.getEntry();
G
ge-yafang 已提交
1174
    console.log("getEntry succeed:" + JSON.stringify(entry));
G
ge-yafang 已提交
1175
} catch (e) {
G
ge-yafang 已提交
1176
    console.log("getEntry failed: " + e);
G
ge-yafang 已提交
1177 1178
}
```
A
asfasdff 已提交
1179 1180


1181
## Query<sup>8+</sup> ##
A
asfasdff 已提交
1182 1183 1184

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

G
ge-yafang 已提交
1185
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1186

1187 1188 1189 1190
### constructor<sup>8+</sup> ###

constructor() 

G
ge-yafang 已提交
1191
用于创建Schema实例的构造函数。
1192

G
ge-yafang 已提交
1193
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1194

1195

A
asfasdff 已提交
1196
### reset<sup>8+</sup> ###
A
asfasdff 已提交
1197

1198
reset(): Query
A
asfasdff 已提交
1199

G
ge-yafang 已提交
1200
重置Query对象。
A
asfasdff 已提交
1201

G
ge-yafang 已提交
1202
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1203 1204


G
ge-yafang 已提交
1205
**返回值:**
A
asfasdff 已提交
1206

1207 1208
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1209
| [Query](#query8) |返回重置的Query对象。|
A
asfasdff 已提交
1210

G
ge-yafang 已提交
1211
**示例:**
A
asfasdff 已提交
1212

G
ge-yafang 已提交
1213
```js
G
ge-yafang 已提交
1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224
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 已提交
1225 1226


A
asfasdff 已提交
1227
### equalTo<sup>8+</sup> ###
A
asfasdff 已提交
1228

G
ge-yafang 已提交
1229
equalTo(field: string, value: number|string|boolean): Query
A
asfasdff 已提交
1230 1231 1232

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

G
ge-yafang 已提交
1233
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1234

G
ge-yafang 已提交
1235
**参数:**
A
asfasdff 已提交
1236

G
ge-yafang 已提交
1237
| 参数名  | 参数类型 | 必填  | 说明                    |
1238
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1239
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1240
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1241

G
ge-yafang 已提交
1242
**返回值:**
A
asfasdff 已提交
1243

1244 1245
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1246
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1247

G
ge-yafang 已提交
1248
**示例:**
A
asfasdff 已提交
1249

G
ge-yafang 已提交
1250
```js
G
ge-yafang 已提交
1251 1252 1253 1254 1255 1256 1257 1258 1259
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 已提交
1260 1261


A
asfasdff 已提交
1262
### notEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1263

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

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

G
ge-yafang 已提交
1268
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1269

G
ge-yafang 已提交
1270
**参数:**
A
asfasdff 已提交
1271

1272 1273
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1274
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1275
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1276

G
ge-yafang 已提交
1277
**返回值:**
A
asfasdff 已提交
1278

1279 1280
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1281
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1282

G
ge-yafang 已提交
1283
**示例:**
A
asfasdff 已提交
1284

G
ge-yafang 已提交
1285
```js
G
ge-yafang 已提交
1286 1287 1288 1289 1290 1291 1292 1293 1294
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 已提交
1295 1296


A
asfasdff 已提交
1297
### greaterThan<sup>8+</sup> ###
A
asfasdff 已提交
1298

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

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

G
ge-yafang 已提交
1303
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1304

G
ge-yafang 已提交
1305
**参数:**
A
asfasdff 已提交
1306

1307 1308
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1309
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1310
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1311

G
ge-yafang 已提交
1312
**返回值:**
A
asfasdff 已提交
1313

1314 1315
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1316
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1317

G
ge-yafang 已提交
1318
**示例:**
A
asfasdff 已提交
1319

G
ge-yafang 已提交
1320
```js
G
ge-yafang 已提交
1321 1322 1323 1324 1325 1326 1327 1328 1329
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 已提交
1330 1331


A
asfasdff 已提交
1332
### lessThan<sup>8+</sup> ###
A
asfasdff 已提交
1333

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

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

G
ge-yafang 已提交
1338
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1339

G
ge-yafang 已提交
1340
**参数:**
A
asfasdff 已提交
1341

1342 1343
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1344
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1345
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1346

G
ge-yafang 已提交
1347
**返回值:**
A
asfasdff 已提交
1348

1349 1350
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1351
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1352

G
ge-yafang 已提交
1353
**示例:**
A
asfasdff 已提交
1354

G
ge-yafang 已提交
1355
```js
G
ge-yafang 已提交
1356 1357 1358 1359 1360 1361 1362 1363 1364
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 已提交
1365 1366


A
asfasdff 已提交
1367
### greaterThanOrEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1368

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

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

G
ge-yafang 已提交
1373
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1374

G
ge-yafang 已提交
1375
**参数:**
A
asfasdff 已提交
1376

1377 1378
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1379
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1380
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1381

G
ge-yafang 已提交
1382
**返回值:**
A
asfasdff 已提交
1383

1384 1385
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1386
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1387

G
ge-yafang 已提交
1388
**示例:**
A
asfasdff 已提交
1389

G
ge-yafang 已提交
1390
```js
G
ge-yafang 已提交
1391 1392 1393 1394 1395 1396 1397 1398 1399
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 已提交
1400 1401


A
asfasdff 已提交
1402
### lessThanOrEqualTo<sup>8+</sup> ###
A
asfasdff 已提交
1403

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

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

G
ge-yafang 已提交
1408
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1409

G
ge-yafang 已提交
1410
**参数:**
A
asfasdff 已提交
1411

1412 1413
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1414
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1415
| value  | number\|string\|boolean  | 是    | 表示指定的值。|
A
asfasdff 已提交
1416

G
ge-yafang 已提交
1417
**返回值:**
A
asfasdff 已提交
1418

1419 1420
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1421
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1422

G
ge-yafang 已提交
1423
**示例:**
A
asfasdff 已提交
1424

G
ge-yafang 已提交
1425
```js
G
ge-yafang 已提交
1426 1427 1428 1429 1430 1431 1432 1433 1434
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 已提交
1435 1436


A
asfasdff 已提交
1437
### isNull<sup>8+</sup> ###
A
asfasdff 已提交
1438

1439
isNull(field: string): Query
A
asfasdff 已提交
1440 1441 1442

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

G
ge-yafang 已提交
1443
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1444

G
ge-yafang 已提交
1445
**参数:**
A
asfasdff 已提交
1446

1447 1448
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1449
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
A
asfasdff 已提交
1450

G
ge-yafang 已提交
1451
**返回值:**
A
asfasdff 已提交
1452

1453 1454
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1455
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1456

G
ge-yafang 已提交
1457
**示例:**
A
asfasdff 已提交
1458

G
ge-yafang 已提交
1459
```js
G
ge-yafang 已提交
1460 1461 1462 1463 1464 1465 1466 1467 1468
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 已提交
1469 1470


A
asfasdff 已提交
1471
### inNumber<sup>8+</sup> ###
A
asfasdff 已提交
1472

1473
inNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1474 1475 1476

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

1477

G
ge-yafang 已提交
1478
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1479

G
ge-yafang 已提交
1480
**参数:**
A
asfasdff 已提交
1481

1482 1483
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1484
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
1485
| valueList  | number[]  | 是    | 表示指定的值列表。|
A
asfasdff 已提交
1486

G
ge-yafang 已提交
1487
**返回值:**
A
asfasdff 已提交
1488

1489 1490
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1491
| [Query](#query8) |返回Query对象。|
1492

G
ge-yafang 已提交
1493
**示例:**
A
asfasdff 已提交
1494

G
ge-yafang 已提交
1495
```js
G
ge-yafang 已提交
1496 1497 1498 1499 1500 1501 1502 1503 1504
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 已提交
1505 1506


A
asfasdff 已提交
1507
### inString<sup>8+</sup> ###
A
asfasdff 已提交
1508

1509
inString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1510 1511 1512

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

G
ge-yafang 已提交
1513
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1514

G
ge-yafang 已提交
1515
**参数:**
A
asfasdff 已提交
1516

1517 1518
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1519
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
1520
| valueList  | string[]  | 是    | 表示指定的字符串值列表。|
A
asfasdff 已提交
1521

G
ge-yafang 已提交
1522
**返回值:**
A
asfasdff 已提交
1523

1524 1525
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1526
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1527

G
ge-yafang 已提交
1528
**示例:**
A
asfasdff 已提交
1529

G
ge-yafang 已提交
1530
```js
G
ge-yafang 已提交
1531 1532 1533 1534 1535 1536 1537 1538 1539
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 已提交
1540 1541


A
asfasdff 已提交
1542
### notInNumber<sup>8+</sup> ###
A
asfasdff 已提交
1543

1544
notInNumber(field: string, valueList: number[]): Query
A
asfasdff 已提交
1545 1546 1547

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

G
ge-yafang 已提交
1548
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1549

G
ge-yafang 已提交
1550
**参数:**
A
asfasdff 已提交
1551

1552 1553
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1554
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
1555
| valueList  | number[]  | 是    | 表示指定的值列表。|
A
asfasdff 已提交
1556

G
ge-yafang 已提交
1557
**返回值:**
A
asfasdff 已提交
1558

1559 1560
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1561
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1562

G
ge-yafang 已提交
1563
**示例:**
A
asfasdff 已提交
1564

G
ge-yafang 已提交
1565
```js
G
ge-yafang 已提交
1566 1567 1568 1569 1570 1571 1572 1573 1574
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 已提交
1575 1576


A
asfasdff 已提交
1577
### notInString<sup>8+</sup> ###
A
asfasdff 已提交
1578

1579
notInString(field: string, valueList: string[]): Query
A
asfasdff 已提交
1580 1581 1582

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

G
ge-yafang 已提交
1583
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1584

G
ge-yafang 已提交
1585
**参数:**
A
asfasdff 已提交
1586

1587 1588
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1589
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
1590
| valueList  | string[]  | 是    | 表示指定的字符串值列表。|
A
asfasdff 已提交
1591

G
ge-yafang 已提交
1592
**返回值:**
A
asfasdff 已提交
1593

1594 1595
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1596
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1597

G
ge-yafang 已提交
1598
**示例:**
A
asfasdff 已提交
1599

G
ge-yafang 已提交
1600
```js
G
ge-yafang 已提交
1601 1602 1603 1604 1605 1606 1607 1608 1609
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 已提交
1610 1611


A
asfasdff 已提交
1612
### like<sup>8+</sup> ###
A
asfasdff 已提交
1613

1614
like(field: string, value: string): Query
A
asfasdff 已提交
1615 1616 1617

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

G
ge-yafang 已提交
1618
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1619

G
ge-yafang 已提交
1620
**参数:**
A
asfasdff 已提交
1621

1622 1623
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1624
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1625
| value  | string  | 是    | 表示指定的字符串值。|
A
asfasdff 已提交
1626

G
ge-yafang 已提交
1627
**返回值:**
A
asfasdff 已提交
1628

1629 1630
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1631
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1632

G
ge-yafang 已提交
1633
**示例:**
A
asfasdff 已提交
1634

G
ge-yafang 已提交
1635
```js
G
ge-yafang 已提交
1636 1637 1638 1639 1640 1641 1642 1643 1644
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 已提交
1645 1646


A
asfasdff 已提交
1647
### unlike<sup>8+</sup> ###
A
asfasdff 已提交
1648

1649
unlike(field: string, value: string): Query
A
asfasdff 已提交
1650 1651 1652

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

G
ge-yafang 已提交
1653
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1654

G
ge-yafang 已提交
1655
**参数:**
A
asfasdff 已提交
1656

1657 1658
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1659
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
G
ge-yafang 已提交
1660
| value  | string  | 是    | 表示指定的字符串值。|
A
asfasdff 已提交
1661

G
ge-yafang 已提交
1662
**返回值:**
A
asfasdff 已提交
1663

1664 1665
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1666
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1667

G
ge-yafang 已提交
1668
**示例:**
A
asfasdff 已提交
1669

G
ge-yafang 已提交
1670
```js
G
ge-yafang 已提交
1671 1672 1673 1674 1675 1676 1677 1678 1679
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 已提交
1680 1681


A
asfasdff 已提交
1682
### and<sup>8+</sup> ###
A
asfasdff 已提交
1683

1684
and(): Query
A
asfasdff 已提交
1685 1686 1687

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

G
ge-yafang 已提交
1688
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1689

G
ge-yafang 已提交
1690
**返回值:**
A
asfasdff 已提交
1691

1692 1693
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1694
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1695

G
ge-yafang 已提交
1696
**示例:**
A
asfasdff 已提交
1697

G
ge-yafang 已提交
1698
```js
G
ge-yafang 已提交
1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709
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 已提交
1710 1711


A
asfasdff 已提交
1712
### or<sup>8+</sup> ###
A
asfasdff 已提交
1713

1714
or(): Query
A
asfasdff 已提交
1715 1716 1717

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

G
ge-yafang 已提交
1718
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1719

G
ge-yafang 已提交
1720
**返回值:**
A
asfasdff 已提交
1721

1722 1723
| 类型    | 说明       |
| ------  | -------   |
Z
zengyawen 已提交
1724
| [Query](#query8) |返回查询对象。|
A
asfasdff 已提交
1725

G
ge-yafang 已提交
1726
**示例:**
A
asfasdff 已提交
1727

G
ge-yafang 已提交
1728
```js
G
ge-yafang 已提交
1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739
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 已提交
1740 1741


A
asfasdff 已提交
1742
### orderByAsc<sup>8+</sup> ###
A
asfasdff 已提交
1743

1744
orderByAsc(field: string): Query
A
asfasdff 已提交
1745 1746 1747

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

G
ge-yafang 已提交
1748
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1749

G
ge-yafang 已提交
1750
**参数:**
A
asfasdff 已提交
1751

1752 1753
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1754
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
A
asfasdff 已提交
1755

G
ge-yafang 已提交
1756
**返回值:**
A
asfasdff 已提交
1757

1758 1759
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1760
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1761

G
ge-yafang 已提交
1762
**示例:**
A
asfasdff 已提交
1763

G
ge-yafang 已提交
1764
```js
G
ge-yafang 已提交
1765 1766 1767 1768 1769 1770 1771 1772 1773 1774
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 已提交
1775 1776


A
asfasdff 已提交
1777
### orderByDesc<sup>8+</sup> ###
A
asfasdff 已提交
1778

1779
orderByDesc(field: string): Query
A
asfasdff 已提交
1780 1781 1782

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

G
ge-yafang 已提交
1783
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1784

G
ge-yafang 已提交
1785
**参数:**
A
asfasdff 已提交
1786

1787 1788
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1789
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。  |
A
asfasdff 已提交
1790

G
ge-yafang 已提交
1791
**返回值:**
A
asfasdff 已提交
1792

1793 1794
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1795
| [Query](#query8) |返回Query对象。|
1796

G
ge-yafang 已提交
1797
**示例:**
A
asfasdff 已提交
1798

G
ge-yafang 已提交
1799
```js
G
ge-yafang 已提交
1800 1801 1802 1803 1804 1805 1806 1807 1808 1809
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 已提交
1810 1811


A
asfasdff 已提交
1812
### limit<sup>8+</sup> ###
A
asfasdff 已提交
1813

1814
limit(total: number, offset: number): Query
A
asfasdff 已提交
1815 1816 1817

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

G
ge-yafang 已提交
1818
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1819

G
ge-yafang 已提交
1820
**参数:**
A
asfasdff 已提交
1821

1822 1823 1824 1825
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| total  | number  | 是    |表示指定的结果数。  |
| offset | number  | 是    |表示起始位置。  |
A
asfasdff 已提交
1826

G
ge-yafang 已提交
1827
**返回值:**
A
asfasdff 已提交
1828

1829 1830
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1831
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1832

G
ge-yafang 已提交
1833
**示例:**
A
asfasdff 已提交
1834

G
ge-yafang 已提交
1835
```js
G
ge-yafang 已提交
1836 1837 1838 1839 1840 1841 1842 1843 1844 1845
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 已提交
1846 1847


A
asfasdff 已提交
1848
### isNotNull<sup>8+</sup> ###
A
asfasdff 已提交
1849

1850
isNotNull(field: string): Query
A
asfasdff 已提交
1851

G
ge-yafang 已提交
1852
构造一个Query对象以查询具有值不为null的指定字段的条目。
A
asfasdff 已提交
1853

G
ge-yafang 已提交
1854
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1855

G
ge-yafang 已提交
1856
**参数:**
A
asfasdff 已提交
1857

1858 1859
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
1860
| fieId  | string  | 是    |表示指定字段,不能包含' ^ '。      |
A
asfasdff 已提交
1861

G
ge-yafang 已提交
1862
**返回值:**
A
asfasdff 已提交
1863

1864 1865
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1866
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1867

G
ge-yafang 已提交
1868
**示例:**
A
asfasdff 已提交
1869

G
ge-yafang 已提交
1870
```js
G
ge-yafang 已提交
1871 1872 1873 1874 1875 1876 1877 1878 1879
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 已提交
1880 1881


A
asfasdff 已提交
1882
### beginGroup<sup>8+</sup> ###
A
asfasdff 已提交
1883

1884
beginGroup(): Query
A
asfasdff 已提交
1885 1886 1887

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

G
ge-yafang 已提交
1888
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1889

G
ge-yafang 已提交
1890
**返回值:**
A
asfasdff 已提交
1891

1892 1893
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1894
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1895

G
ge-yafang 已提交
1896
**示例:**
A
asfasdff 已提交
1897

G
ge-yafang 已提交
1898
```js
G
ge-yafang 已提交
1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909
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 已提交
1910 1911


A
asfasdff 已提交
1912
### endGroup<sup>8+</sup> ###
A
asfasdff 已提交
1913

1914
endGroup(): Query
A
asfasdff 已提交
1915 1916 1917

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

G
ge-yafang 已提交
1918
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1919

G
ge-yafang 已提交
1920
**返回值:**
A
asfasdff 已提交
1921

1922 1923
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1924
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1925

G
ge-yafang 已提交
1926
**示例:**
A
asfasdff 已提交
1927

G
ge-yafang 已提交
1928
```js
G
ge-yafang 已提交
1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939
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 已提交
1940 1941


A
asfasdff 已提交
1942
### prefixKey<sup>8+</sup> ###
A
asfasdff 已提交
1943

1944
prefixKey(prefix: string): Query
A
asfasdff 已提交
1945 1946 1947

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

G
ge-yafang 已提交
1948
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1949

G
ge-yafang 已提交
1950
**参数:**
A
asfasdff 已提交
1951

1952 1953 1954
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| prefix | string  | 是    |表示指定的键前缀。     |
A
asfasdff 已提交
1955

G
ge-yafang 已提交
1956
**返回值:**
A
asfasdff 已提交
1957

1958 1959
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1960
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1961

G
ge-yafang 已提交
1962
**示例:**
A
asfasdff 已提交
1963

G
ge-yafang 已提交
1964
```js
G
ge-yafang 已提交
1965 1966 1967 1968 1969 1970 1971 1972 1973 1974
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 已提交
1975 1976


A
asfasdff 已提交
1977
### setSuggestIndex<sup>8+</sup> ###
A
asfasdff 已提交
1978

1979
setSuggestIndex(index: string): Query
A
asfasdff 已提交
1980 1981 1982

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

G
ge-yafang 已提交
1983
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
1984

G
ge-yafang 已提交
1985
**参数:**
A
asfasdff 已提交
1986

1987 1988 1989
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| index  | string  | 是    |指示要设置的索引。   |
A
asfasdff 已提交
1990

G
ge-yafang 已提交
1991
**返回值:**
A
asfasdff 已提交
1992

1993 1994
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
1995
| [Query](#query8) |返回Query对象。|
A
asfasdff 已提交
1996

G
ge-yafang 已提交
1997
**示例:**
A
asfasdff 已提交
1998

G
ge-yafang 已提交
1999
```js
G
ge-yafang 已提交
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
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 已提交
2010 2011


A
fix up  
asfasdff 已提交
2012 2013
### deviceId<sup>8+</sup> ###

2014
deviceId(deviceId:string):Query
A
fix up  
asfasdff 已提交
2015 2016 2017

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

G
ge-yafang 已提交
2018
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2019

G
ge-yafang 已提交
2020
**参数:**
A
fix up  
asfasdff 已提交
2021

2022 2023
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2024
| deviceId | string  | 是    |指示查询的设备ID。   |
2025

A
fix up  
asfasdff 已提交
2026

G
ge-yafang 已提交
2027
**返回值:**
A
fix up  
asfasdff 已提交
2028

2029 2030
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2031
| [Query](#query8) |返回Query对象。|
A
fix up  
asfasdff 已提交
2032

G
ge-yafang 已提交
2033
**示例:**
A
fix up  
asfasdff 已提交
2034

G
ge-yafang 已提交
2035
```js
G
ge-yafang 已提交
2036 2037 2038 2039 2040 2041 2042 2043
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 已提交
2044 2045 2046 2047


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

2048
getSqlLike():string
A
fix up  
asfasdff 已提交
2049

G
ge-yafang 已提交
2050
获取Query对象的查询语句。
A
fix up  
asfasdff 已提交
2051

G
ge-yafang 已提交
2052
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2053

G
ge-yafang 已提交
2054
**返回值:**
A
fix up  
asfasdff 已提交
2055

2056 2057
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2058
| string |返回一个字段列中包含对应子串的结果。|
A
fix up  
asfasdff 已提交
2059

G
ge-yafang 已提交
2060
**示例:**
A
fix up  
asfasdff 已提交
2061

G
ge-yafang 已提交
2062
```js
G
ge-yafang 已提交
2063 2064 2065 2066 2067 2068 2069 2070
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 已提交
2071 2072


2073
## KVStore
Z
zengyawen 已提交
2074

G
ge-yafang 已提交
2075 2076 2077
KVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅数据同步完成的方法。

在调用KVStore的方法前,需要先通过[getKVStore](#getkvstore)构建一个KVStore实例。
2078

2079
### put
Z
zengyawen 已提交
2080

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

G
ge-yafang 已提交
2083
添加指定类型键值对到数据库,使用callback异步回调。
Z
zengyawen 已提交
2084

G
ge-yafang 已提交
2085
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2086

G
ge-yafang 已提交
2087
**参数:**
A
asfasdff 已提交
2088

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

G
ge-yafang 已提交
2095
**示例:**
A
asfasdff 已提交
2096

G
ge-yafang 已提交
2097
```js
G
ge-yafang 已提交
2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112
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 已提交
2113 2114


2115
### put
A
asfasdff 已提交
2116

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

G
ge-yafang 已提交
2119
添加指定类型键值对到数据库,使用Promise异步回调。
Z
zengyawen 已提交
2120

G
ge-yafang 已提交
2121
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2122

G
ge-yafang 已提交
2123
**参数:**
A
asfasdff 已提交
2124

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

G
ge-yafang 已提交
2130
**返回值:**
A
asfasdff 已提交
2131

2132 2133
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2134
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2135

G
ge-yafang 已提交
2136
**示例:**
A
asfasdff 已提交
2137

G
ge-yafang 已提交
2138
```js
G
ge-yafang 已提交
2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151
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 已提交
2152

2153
### delete
A
asfasdff 已提交
2154

A
asfasdff 已提交
2155
delete(key: string, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
2156

G
ge-yafang 已提交
2157
从数据库中删除指定键值的数据,使用callback异步回调。
Z
zengyawen 已提交
2158

G
ge-yafang 已提交
2159
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2160

G
ge-yafang 已提交
2161
**参数:**
A
asfasdff 已提交
2162

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

G
ge-yafang 已提交
2168
**示例:**
A
asfasdff 已提交
2169

G
ge-yafang 已提交
2170
```js
G
ge-yafang 已提交
2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181
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 已提交
2182
            if (err != undefined) {
G
ge-yafang 已提交
2183
                console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2184 2185
                return;
            }
G
ge-yafang 已提交
2186
            console.log("delete success");
A
asfasdff 已提交
2187
        });
G
ge-yafang 已提交
2188 2189 2190 2191 2192
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
2193

2194
### delete
A
asfasdff 已提交
2195

A
asfasdff 已提交
2196
delete(key: string): Promise&lt;void&gt;
Z
zengyawen 已提交
2197

G
ge-yafang 已提交
2198
从数据库中删除指定键值的数据,使用Promise异步回调。
Z
zengyawen 已提交
2199

G
ge-yafang 已提交
2200
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2201

G
ge-yafang 已提交
2202
**参数:**
A
asfasdff 已提交
2203

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

G
ge-yafang 已提交
2208
**返回值:**
A
asfasdff 已提交
2209

2210 2211
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2212
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2213

G
ge-yafang 已提交
2214
**示例:**
A
asfasdff 已提交
2215

G
ge-yafang 已提交
2216
```js
G
ge-yafang 已提交
2217 2218 2219 2220 2221 2222 2223 2224
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 已提交
2225
        }).catch((err) => {
G
ge-yafang 已提交
2226
            console.log("delete err: " + JSON.stringify(err));
A
asfasdff 已提交
2227
        });
G
ge-yafang 已提交
2228 2229 2230 2231 2232 2233 2234
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
W
wangkai 已提交
2235 2236 2237

### delete<sup>9+</sup>

W
wangkai 已提交
2238
delete(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;void&gt;): void
W
wangkai 已提交
2239 2240 2241 2242 2243 2244 2245 2246 2247

从数据库中删除符合predicates条件的键值对,并通过callback方式返回,此方法为异步方法。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
W
wangkai 已提交
2248
| predicates    | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates)  | 是    |指示筛选条件,当此参数为null时,应定义处理逻辑。|
W
wangkai 已提交
2249 2250 2251 2252 2253
| callback  | AsyncCallback&lt;void&gt;  | 是    |回调函数。   |

**示例:**

```js
W
wangkai 已提交
2254
import dataSharePredicates from './@ohos.data.dataSharePredicates';
W
wangkai 已提交
2255 2256
let kvStore;
try {
W
wangkai 已提交
2257 2258
	let predicates = new dataSharePredicates.DataSharePredicates();
	kvStore.delete(predicates, function (err, data) {
W
wangkai 已提交
2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271
		if (err == undefined) {
			console.log('delete success');
		} else {
			console.log('delete fail' + err);
		}
    });  
} catch (e) {
	console.log('An unexpected error occurred. Error:' + e);
}
```

### delete<sup>9+</sup>

W
wangkai 已提交
2272
delete(predicates: dataSharePredicates.DataSharePredicates): Promise&lt;void&gt;
W
wangkai 已提交
2273 2274 2275 2276 2277 2278 2279 2280 2281

从数据库中删除符合predicates条件的键值对,并通过Promise方式返回,此方法为异步方法。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
W
wangkai 已提交
2282
| predicates    | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates)  | 是    |指示筛选条件,当此参数为null时,应定义处理逻辑。|
W
wangkai 已提交
2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293


**返回值:**

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

**示例:**

```js
W
wangkai 已提交
2294
import dataSharePredicates from './@ohos.data.dataSharePredicates';
W
wangkai 已提交
2295 2296
let kvStore;
try {
W
wangkai 已提交
2297
	let predicates = new dataSharePredicates.DataSharePredicates();
W
wangkai 已提交
2298 2299 2300 2301 2302
	let arr = ["name"];
	predicates.inKeys(arr);
	kvStore.put("name", "bob").then((data) => {
		console.log('put success' + JSON.stringify(data));
		kvStore.delete(predicates).then((data) => {
W
wangkai 已提交
2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315
			console.log('delete success');
		}).catch((err) => {
			console.log('delete fail' + JSON.stringify(err));
		});
	}) .catch((err) => {
		console.log(' put fail' + err);
	});
}catch (e) {
	console.log("An unexpected error occurred. Error:" + e);
}

```

G
ge-yafang 已提交
2316
### on('dataChange')
A
asfasdff 已提交
2317

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

G
ge-yafang 已提交
2320
订阅指定类型的数据变更通知。
Z
zengyawen 已提交
2321

G
ge-yafang 已提交
2322
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2323

G
ge-yafang 已提交
2324
**参数:**
A
asfasdff 已提交
2325

2326 2327
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2328
| event  |string  | 是    |订阅的事件名,固定为'dataChange',表示数据变更事件。       |
Z
zengyawen 已提交
2329 2330
| type  |[SubscribeType](#subscribetype) | 是    |表示订阅的类型。     |
| observer |Callback&lt;[ChangeNotification](#changenotification)&gt; | 是    |回调函数。 |
2331

G
ge-yafang 已提交
2332
**示例:**
A
asfasdff 已提交
2333

G
ge-yafang 已提交
2334
```js
G
ge-yafang 已提交
2335 2336 2337 2338 2339
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
```
A
asfasdff 已提交
2340 2341


G
ge-yafang 已提交
2342
### on('syncComplete')
A
asfasdff 已提交
2343

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

G
ge-yafang 已提交
2346
订阅同步完成事件回调通知。
Z
zengyawen 已提交
2347

G
ge-yafang 已提交
2348
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2349

G
ge-yafang 已提交
2350
**参数:**
A
asfasdff 已提交
2351

2352 2353
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2354
| event  |string | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。       |
2355
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt; | 是    |回调函数。     |
2356

G
ge-yafang 已提交
2357
**示例:**
A
asfasdff 已提交
2358

2359
```js
G
ge-yafang 已提交
2360 2361
let kvStore;
kvStore.on('syncComplete', function (data) {
2362
    console.log("callback call data: " + data);
G
ge-yafang 已提交
2363 2364
});
```
A
asfasdff 已提交
2365

G
ge-yafang 已提交
2366
### off('dataChange')<sup>8+</sup>
A
asfasdff 已提交
2367

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

G
ge-yafang 已提交
2370
取消订阅数据变更通知。
A
asfasdff 已提交
2371

G
ge-yafang 已提交
2372
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2373

G
ge-yafang 已提交
2374
**参数:**
A
asfasdff 已提交
2375

2376 2377
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2378
| event  |string  | 是    |取消订阅的事件名,固定为'dataChange',表示数据变更事件。       |
Z
zengyawen 已提交
2379
| observer |Callback&lt;[ChangeNotification](#changenotification)&gt; |否    |回调函数。 |
A
asfasdff 已提交
2380

G
ge-yafang 已提交
2381
**示例:**
A
asfasdff 已提交
2382

G
ge-yafang 已提交
2383
```js
G
ge-yafang 已提交
2384 2385
let kvStore;
kvStore.on('dataChange', function (data) {
2386
    console.log("callback call data: " + data);
G
ge-yafang 已提交
2387 2388
});
kvStore.off('dataChange', function (data) {
2389
    console.log("callback call data: " + data);
G
ge-yafang 已提交
2390 2391
});
```
A
asfasdff 已提交
2392

W
wangkai 已提交
2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422
### off('syncComplete')<sup>9+</sup>

off(event: 'syncComplete', syncCallback?: Callback&lt;Array&lt;[string, number]&gt;&gt;): void

取消订阅数据变更通知,此方法为同步方法。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |string  | 是    |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。       |
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 否    |用于向调用方发送同步结果的回调。    |

**示例:**

```js
let kvStore;
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 已提交
2423

2424
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2425

2426
putBatch(entries: Entry[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2427

G
ge-yafang 已提交
2428
批量插入键值对到KVStore数据库中,使用callback异步回调。
A
asfasdff 已提交
2429

G
ge-yafang 已提交
2430
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2431

G
ge-yafang 已提交
2432
**参数:**
A
asfasdff 已提交
2433

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

G
ge-yafang 已提交
2439
**示例:**
A
asfasdff 已提交
2440

G
ge-yafang 已提交
2441
```js
G
ge-yafang 已提交
2442 2443 2444 2445 2446 2447 2448 2449 2450 2451
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 已提交
2452 2453
            }
        }
G
ge-yafang 已提交
2454
        entries.push(entry);
A
asfasdff 已提交
2455
    }
G
ge-yafang 已提交
2456 2457 2458
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
2459
        kvStore.getEntries('batch_test_string_key', function (err,entrys) {
G
ge-yafang 已提交
2460 2461 2462 2463 2464 2465
            console.log('getEntries success');
            console.log('entrys.length: ' + entrys.length);
            console.log('entrys[0]: ' + JSON.stringify(entrys[0]));
        });
    });
}catch(e) {
G
ge-yafang 已提交
2466
    console.log('PutBatch e ' + JSON.stringify(e));
G
ge-yafang 已提交
2467 2468
}
```
A
asfasdff 已提交
2469 2470


2471
### putBatch<sup>8+</sup>
A
asfasdff 已提交
2472

2473
putBatch(entries: Entry[]): Promise&lt;void&gt;
A
asfasdff 已提交
2474

G
ge-yafang 已提交
2475
批量插入键值对到KVStore数据库中,使用Promise异步回调。
A
asfasdff 已提交
2476

G
ge-yafang 已提交
2477
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2478

G
ge-yafang 已提交
2479
**参数:**
A
asfasdff 已提交
2480

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

G
ge-yafang 已提交
2485
**返回值:**
A
asfasdff 已提交
2486

2487 2488
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2489
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2490

G
ge-yafang 已提交
2491
**示例:**
A
asfasdff 已提交
2492

G
ge-yafang 已提交
2493
```js
G
ge-yafang 已提交
2494 2495 2496 2497 2498 2499 2500 2501 2502 2503
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 已提交
2504 2505
            }
        }
G
ge-yafang 已提交
2506 2507 2508 2509 2510
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
2511
        kvStore.getEntries('batch_test_string_key').then((entrys) => {
G
ge-yafang 已提交
2512 2513
            console.log('getEntries success');
            console.log('PutBatch ' + JSON.stringify(entries));
A
asfasdff 已提交
2514
        }).catch((err) => {
G
ge-yafang 已提交
2515
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
2516
        });
G
ge-yafang 已提交
2517 2518 2519 2520
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
G
ge-yafang 已提交
2521
    console.log('PutBatch e ' + JSON.stringify(e));
G
ge-yafang 已提交
2522 2523
}
```
A
asfasdff 已提交
2524

W
wangkai 已提交
2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536
### putBatch<sup>9+</sup>

putBatch(value: Array&lt;ValuesBucket&gt;, callback: AsyncCallback&lt;void&gt;): void
  
将值写入KvStore数据库,并通过callback方式返回,此方法为异步方法。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
W
wangkai 已提交
2537
| value   |Array&lt;[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)&gt; | 是    |表示要插入的数据。  |
W
wangkai 已提交
2538 2539 2540 2541 2542 2543 2544
| callback |Asyncallback&lt;void&gt; |是     |回调函数。 |

**示例:**

```js
let kvStore;
try {
W
wangkai 已提交
2545 2546 2547 2548 2549 2550 2551 2552 2553 2554
    let v8Arr = [];
    let arr = new Uint8Array([4,5,6,7]);
    let vb1 = {key : "name_1", value : 32}
    let vb2 = {key : "name_2", value : arr};
    let vb3 = {key : "name_3", value : "lisi"};

    v8Arr.push(vb1);
    v8Arr.push(vb2);
    v8Arr.push(vb3);
    kvStore.putBatch(v8Arr, async function (err,data) {
W
wangkai 已提交
2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575
                console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('putBatch e ' + JSON.stringify(e));
}
```

### putBatch<sup>9+</sup>

putBatch(value: Array&lt;ValuesBucket&gt;): Promise&lt;void&gt;

将valuesbucket类型的值写入KvStore数据库,并通过Promise方式返回,此方法为异步方法。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
W
wangkai 已提交
2576
| value  |Array&lt;[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)&gt; | 是    |表示要插入的数据。  |
W
wangkai 已提交
2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588

**返回值:**

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

**示例:**

```js
let kvStore;
try {
W
wangkai 已提交
2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599
    let v8Arr = [];
    let arr = new Uint8Array([4,5,6,7]);
    let vb1 = {key : "name_1", value : 32}
    let vb2 = {key : "name_2", value : arr};
    let vb3 = {key : "name_3", value : "lisi"};

    v8Arr.push(vb1);
    v8Arr.push(vb2);
    v8Arr.push(vb3);
    kvStore.putBatch(v8Arr).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
2600 2601 2602 2603 2604 2605 2606 2607
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + JSON.stringify(e));
}

```
A
asfasdff 已提交
2608

2609
### deleteBatch<sup>8+</sup>
A
asfasdff 已提交
2610

2611
deleteBatch(keys: string[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2612

G
ge-yafang 已提交
2613
批量删除KVStore数据库中的键值对,使用callback异步回调。
A
asfasdff 已提交
2614

G
ge-yafang 已提交
2615
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2616

G
ge-yafang 已提交
2617
**参数:**
A
asfasdff 已提交
2618

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

G
ge-yafang 已提交
2624
**示例:**
A
asfasdff 已提交
2625

G
ge-yafang 已提交
2626
```js
G
ge-yafang 已提交
2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637
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 已提交
2638 2639
            }
        }
G
ge-yafang 已提交
2640 2641
        entries.push(entry);
        keys.push(key + i);
A
asfasdff 已提交
2642
    }
G
ge-yafang 已提交
2643 2644 2645
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
2646
        kvStore.deleteBatch(keys, async function (err,data) {
G
ge-yafang 已提交
2647 2648 2649 2650 2651 2652 2653
            console.log('deleteBatch success');
        });
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2654 2655


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

2658
deleteBatch(keys: string[]): Promise&lt;void&gt;
A
asfasdff 已提交
2659

G
ge-yafang 已提交
2660
批量删除KVStore数据库中的键值对,使用Promise异步回调。
A
asfasdff 已提交
2661

G
ge-yafang 已提交
2662
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2663

G
ge-yafang 已提交
2664
**参数:**
A
asfasdff 已提交
2665

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

G
ge-yafang 已提交
2670
**返回值:**
A
asfasdff 已提交
2671

2672 2673
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2674
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2675

G
ge-yafang 已提交
2676
**示例:**
A
asfasdff 已提交
2677

G
ge-yafang 已提交
2678
```js
G
ge-yafang 已提交
2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689
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 已提交
2690 2691
            }
        }
G
ge-yafang 已提交
2692 2693 2694 2695 2696 2697
        entries.push(entry);
        keys.push(key + i);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
2698
        kvStore.deleteBatch(keys).then((err) => {
G
ge-yafang 已提交
2699
            console.log('deleteBatch success');
A
asfasdff 已提交
2700
        }).catch((err) => {
G
ge-yafang 已提交
2701
            console.log('deleteBatch fail ' + JSON.stringify(err));
A
asfasdff 已提交
2702
        });
G
ge-yafang 已提交
2703 2704 2705 2706 2707 2708 2709
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('DeleteBatch e ' + e);
}
```
A
asfasdff 已提交
2710 2711


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

2714
startTransaction(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2715

G
ge-yafang 已提交
2716
启动KVStore数据库中的事务,使用callback异步回调。
A
asfasdff 已提交
2717

G
ge-yafang 已提交
2718
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2719

G
ge-yafang 已提交
2720
**参数:**
A
asfasdff 已提交
2721

2722 2723 2724
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2725

G
ge-yafang 已提交
2726
**示例:**
A
asfasdff 已提交
2727

G
ge-yafang 已提交
2728
```js
G
ge-yafang 已提交
2729 2730 2731 2732 2733 2734 2735 2736 2737
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 已提交
2738 2739
            }
        }
G
ge-yafang 已提交
2740
        entries.push(entry);
A
asfasdff 已提交
2741
    }
G
ge-yafang 已提交
2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753
    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));
W
wangkai 已提交
2754
        kvStore.putBatch(entries, async function (err,data) {
G
ge-yafang 已提交
2755
            console.log('putBatch success');
A
asfasdff 已提交
2756
        });
G
ge-yafang 已提交
2757 2758 2759 2760 2761
    });
}catch(e) {
    console.log('startTransaction e ' + e);
}
```
A
asfasdff 已提交
2762 2763


A
asfasdff 已提交
2764
### startTransaction<sup>8+</sup> ###
A
asfasdff 已提交
2765

2766
startTransaction(): Promise&lt;void&gt;
A
asfasdff 已提交
2767

G
ge-yafang 已提交
2768
启动KVStore数据库中的事务,使用Promise异步回调。
A
asfasdff 已提交
2769

G
ge-yafang 已提交
2770
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2771

G
ge-yafang 已提交
2772
**返回值:**
A
asfasdff 已提交
2773

2774 2775
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2776
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2777

G
ge-yafang 已提交
2778
**示例:**
A
asfasdff 已提交
2779

G
ge-yafang 已提交
2780
```js
G
ge-yafang 已提交
2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796
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 已提交
2797 2798


A
asfasdff 已提交
2799
### commit<sup>8+</sup> ###
A
asfasdff 已提交
2800

2801
commit(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2802

G
ge-yafang 已提交
2803
提交KVStore数据库中的事务,使用callback异步回调。
A
asfasdff 已提交
2804

G
ge-yafang 已提交
2805
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2806

G
ge-yafang 已提交
2807
**参数:**
A
asfasdff 已提交
2808

2809 2810 2811
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2812

G
ge-yafang 已提交
2813
**示例:**
A
asfasdff 已提交
2814

G
ge-yafang 已提交
2815
```js
G
ge-yafang 已提交
2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828
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 已提交
2829 2830


A
asfasdff 已提交
2831
### commit<sup>8+</sup> ###
A
asfasdff 已提交
2832

2833
commit(): Promise&lt;void&gt;
A
asfasdff 已提交
2834

G
ge-yafang 已提交
2835
提交KVStore数据库中的事务,使用Promise异步回调。
A
asfasdff 已提交
2836

G
ge-yafang 已提交
2837
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2838

G
ge-yafang 已提交
2839
**返回值:**
A
asfasdff 已提交
2840

2841 2842
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2843
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2844

G
ge-yafang 已提交
2845
**示例:**
A
asfasdff 已提交
2846

G
ge-yafang 已提交
2847
```js
G
ge-yafang 已提交
2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858
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 已提交
2859 2860


A
asfasdff 已提交
2861
### rollback<sup>8+</sup> ###
A
asfasdff 已提交
2862

2863
rollback(callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2864

G
ge-yafang 已提交
2865
在KVStore数据库中回滚事务,使用callback异步回调。
A
asfasdff 已提交
2866

G
ge-yafang 已提交
2867
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2868

G
ge-yafang 已提交
2869
**参数:**
A
asfasdff 已提交
2870

2871 2872 2873
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2874

G
ge-yafang 已提交
2875
**示例:**
A
asfasdff 已提交
2876

G
ge-yafang 已提交
2877
```js
G
ge-yafang 已提交
2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890
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 已提交
2891 2892


A
asfasdff 已提交
2893
### rollback<sup>8+</sup> ###
A
asfasdff 已提交
2894

2895
rollback(): Promise&lt;void&gt;
A
asfasdff 已提交
2896

G
ge-yafang 已提交
2897
在KVStore数据库中回滚事务,使用Promise异步回调。
A
asfasdff 已提交
2898

G
ge-yafang 已提交
2899
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2900

G
ge-yafang 已提交
2901
**返回值:**
A
asfasdff 已提交
2902

2903 2904
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2905
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2906

G
ge-yafang 已提交
2907
**示例:**
A
asfasdff 已提交
2908

G
ge-yafang 已提交
2909
```js
G
ge-yafang 已提交
2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920
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 已提交
2921 2922


A
asfasdff 已提交
2923
### enableSync<sup>8+</sup> ###
A
asfasdff 已提交
2924

2925
enableSync(enabled: boolean, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2926

G
ge-yafang 已提交
2927
设定是否开启同步,使用callback异步回调。
A
asfasdff 已提交
2928

G
ge-yafang 已提交
2929
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2930

G
ge-yafang 已提交
2931
**参数:**
A
asfasdff 已提交
2932

2933 2934
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2935
| enabled  |boolean | 是    |设定是否开启同步,true表示开启同步,false表示不启用同步。  |
2936
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
2937

G
ge-yafang 已提交
2938
**示例:**
A
asfasdff 已提交
2939

G
ge-yafang 已提交
2940
```js
G
ge-yafang 已提交
2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953
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 已提交
2954 2955


A
asfasdff 已提交
2956
### enableSync<sup>8+</sup> ###
A
asfasdff 已提交
2957

2958
enableSync(enabled: boolean): Promise&lt;void&gt;
A
asfasdff 已提交
2959

G
ge-yafang 已提交
2960
设定是否开启同步,使用Promise异步回调。
A
asfasdff 已提交
2961

G
ge-yafang 已提交
2962
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2963

G
ge-yafang 已提交
2964
**参数:**
A
asfasdff 已提交
2965

2966 2967
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
G
ge-yafang 已提交
2968
| enabled  |boolean | 是    |设定是否开启同步,true表示开启同步,false表示不启用同步。  |
A
asfasdff 已提交
2969

G
ge-yafang 已提交
2970
**返回值:**
A
asfasdff 已提交
2971

2972 2973
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
2974
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
2975

G
ge-yafang 已提交
2976
**示例:**
A
asfasdff 已提交
2977

G
ge-yafang 已提交
2978
```js
G
ge-yafang 已提交
2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989
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 已提交
2990 2991


A
asfasdff 已提交
2992
### setSyncRange<sup>8+</sup> ###
A
asfasdff 已提交
2993

2994
setSyncRange(localLabels: string[], remoteSupportLabels: string[], callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
2995

G
ge-yafang 已提交
2996
设置同步范围标签,使用callback异步回调。
A
asfasdff 已提交
2997

G
ge-yafang 已提交
2998
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
2999

G
ge-yafang 已提交
3000
**参数:**
A
asfasdff 已提交
3001

3002 3003 3004 3005 3006
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |
| callback  |AsyncCallback&lt;void&gt; | 是    |回调函数。  |
A
asfasdff 已提交
3007

G
ge-yafang 已提交
3008
**示例:**
A
asfasdff 已提交
3009

G
ge-yafang 已提交
3010
```js
G
ge-yafang 已提交
3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021
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 已提交
3022 3023


A
asfasdff 已提交
3024
### setSyncRange<sup>8+</sup> ###
A
asfasdff 已提交
3025

3026
setSyncRange(localLabels: string[], remoteSupportLabels: string[]): Promise&lt;void&gt;
A
asfasdff 已提交
3027

G
ge-yafang 已提交
3028
设置同步范围标签,使用Promise异步回调。
A
asfasdff 已提交
3029

G
ge-yafang 已提交
3030
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3031

G
ge-yafang 已提交
3032
**参数:**
A
asfasdff 已提交
3033

3034 3035 3036 3037 3038
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| localLabels  |string[] | 是    |表示本地设备的同步标签。  |
| remoteSupportLabels  |string[] | 是    |表示要同步数据的设备的同步标签。  |

A
asfasdff 已提交
3039

G
ge-yafang 已提交
3040
**返回值:**
A
asfasdff 已提交
3041

3042 3043
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3044
| Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3045

G
ge-yafang 已提交
3046
**示例:**
A
asfasdff 已提交
3047

G
ge-yafang 已提交
3048
```js
G
ge-yafang 已提交
3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061
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 已提交
3062 3063


3064
## SubscribeType
Z
zengyawen 已提交
3065

G
ge-yafang 已提交
3066
订阅类型枚举。
Z
zengyawen 已提交
3067

G
ge-yafang 已提交
3068
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
3069

G
ge-yafang 已提交
3070
| 名称  | 值   | 说明                    |
3071 3072 3073 3074 3075 3076
| -----  | ------   | ----------------------- |
| SUBSCRIBE_TYPE_LOCAL  |0 |表示订阅本地数据变更。  |
| SUBSCRIBE_TYPE_REMOTE |1 |表示订阅远端数据变更。  |
| SUBSCRIBE_TYPE_ALL  |2 |表示订阅远端和本地数据变更。  |

## ChangeNotification
Z
zengyawen 已提交
3077 3078 3079

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

G
ge-yafang 已提交
3080
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
3081

3082 3083 3084 3085 3086 3087 3088 3089
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| insertEntries | [Entry](#entry)[]   | 是  |  是 |数据添加记录。   |
| updateEntries | [Entry](#entry)[]   | 是  |  是 |数据更新记录。   |
| deleteEntries | [Entry](#entry)[]   | 是  |  是 |数据删除记录。   |
| deviceId | string   | 是  |  是 |设备ID,此处为设备UUID。  |

## Entry
Z
zengyawen 已提交
3090 3091 3092

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

G
ge-yafang 已提交
3093
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
3094

3095 3096 3097 3098 3099 3100 3101
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| key | string   | 是  |  是 |键值。   |
| value | [Value](#value) | 是  |  是 |值对象。   |


## Value
Z
zengyawen 已提交
3102

G
ge-yafang 已提交
3103
存储在数据库中的值对象。
Z
zengyawen 已提交
3104

G
ge-yafang 已提交
3105
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
3106

3107 3108 3109
| 名称  | 参数类型   |可读   |可写   | 说明                    |
| ----- | -------   | -----| ------|------------------------ |
| type | [ValueType](#value)   | 是  |  是 |值类型。   |
G
ge-yafang 已提交
3110
| value | Uint8Array \| string \| number \| boolean| 是  |  是 |值。   |
3111 3112

## ValueType
Z
zengyawen 已提交
3113

G
ge-yafang 已提交
3114
数据类型枚举。
Z
zengyawen 已提交
3115

G
ge-yafang 已提交
3116
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
3117

G
ge-yafang 已提交
3118
| 名称  | 值   | 说明                    |
3119 3120 3121 3122 3123 3124 3125 3126 3127
| -----  | ------   | ----------------------- |
| STRING  |0 |表示值类型为字符串。  |
| INTEGER |1 |表示值类型为整数。  |
| FLOAT   |2 |表示值类型为浮点数。  |
| BYTE_ARRAY   |3 |表示值类型为字节数组。  |
| BOOLEAN   |4 |表示值类型为布尔值。  |
| DOUBLE   |5 |表示值类型为双浮点数。  |

## SingleKVStore
Z
zengyawen 已提交
3128

G
ge-yafang 已提交
3129 3130 3131 3132 3133
单版本数据库,继承自[KVStore](#kvstore)数据库,提供查询数据和同步数据的方法。

单版本数据库,不对数据所属设备进行区分,不同设备使用相同键写入数据会互相覆盖。比如,可以使用单版本数据库实现个人日历、联系人数据在不同设备间的数据同步。

在调用SingleKVStore的方法前,需要先通过[getKVStore](#getkvstore)构建一个SingleKVStore实例。
3134

3135
### get
Z
zengyawen 已提交
3136

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

G
ge-yafang 已提交
3139
获取指定键的值,使用callback异步回调。
Z
zengyawen 已提交
3140

G
ge-yafang 已提交
3141
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3142

G
ge-yafang 已提交
3143
**参数:**
A
asfasdff 已提交
3144

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

G
ge-yafang 已提交
3150
**示例:**
A
asfasdff 已提交
3151

G
ge-yafang 已提交
3152
```js
G
ge-yafang 已提交
3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164
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 已提交
3165
        });
G
ge-yafang 已提交
3166 3167 3168 3169 3170
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3171 3172


3173
### get
A
asfasdff 已提交
3174

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

G
ge-yafang 已提交
3177
获取指定键的值,使用Promise异步回调。
Z
zengyawen 已提交
3178

G
ge-yafang 已提交
3179
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3180

G
ge-yafang 已提交
3181
**参数:**
A
asfasdff 已提交
3182

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

A
asfasdff 已提交
3187

G
ge-yafang 已提交
3188
**返回值:**
A
asfasdff 已提交
3189

3190 3191
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3192
|Promise&lt;Uint8Array \| string \| boolean \| number&gt; |Promise对象。返回获取查询的值。|
A
asfasdff 已提交
3193

G
ge-yafang 已提交
3194
**示例:**
A
asfasdff 已提交
3195

G
ge-yafang 已提交
3196
```js
G
ge-yafang 已提交
3197 3198 3199 3200 3201 3202 3203 3204
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 已提交
3205
        }).catch((err) => {
G
ge-yafang 已提交
3206
            console.log("get err: " + JSON.stringify(err));
A
asfasdff 已提交
3207
        });
G
ge-yafang 已提交
3208 3209 3210 3211 3212 3213 3214
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}
```
A
asfasdff 已提交
3215

A
asfasdff 已提交
3216
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3217

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

G
ge-yafang 已提交
3220
获取匹配指定键前缀的所有键值对,使用callback异步回调。
A
asfasdff 已提交
3221

G
ge-yafang 已提交
3222
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3223

G
ge-yafang 已提交
3224
**参数:**
A
asfasdff 已提交
3225

3226 3227 3228
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
G
ge-yafang 已提交
3229
| callback    |AsyncCallback&lt;[Entry](#entry)[]&gt;   | 是    |回调函数。返回匹配指定前缀的键值对列表。  |
A
asfasdff 已提交
3230

G
ge-yafang 已提交
3231
**示例:**
A
asfasdff 已提交
3232

G
ge-yafang 已提交
3233
```js
G
ge-yafang 已提交
3234 3235 3236 3237 3238 3239 3240 3241 3242 3243
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 已提交
3244 3245
            }
        }
G
ge-yafang 已提交
3246
        entries.push(entry);
A
asfasdff 已提交
3247
    }
G
ge-yafang 已提交
3248 3249
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
3250
        kvStore.getEntries('batch_test_number_key', function (err,entrys) {
G
ge-yafang 已提交
3251 3252 3253 3254 3255 3256 3257 3258 3259
            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 已提交
3260 3261


A
asfasdff 已提交
3262
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3263

3264
getEntries(keyPrefix: string): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
3265

G
ge-yafang 已提交
3266
获取匹配指定键前缀的所有键值对,使用Promise异步回调。
A
asfasdff 已提交
3267

G
ge-yafang 已提交
3268
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3269

G
ge-yafang 已提交
3270
**参数:**
A
asfasdff 已提交
3271

3272 3273 3274
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix    |string   | 是    |表示要匹配的键前缀。  |
A
asfasdff 已提交
3275

G
ge-yafang 已提交
3276
**返回值:**
A
asfasdff 已提交
3277

3278 3279
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3280
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回匹配指定前缀的键值对列表。|
A
asfasdff 已提交
3281

G
ge-yafang 已提交
3282
**示例:**
A
asfasdff 已提交
3283

G
ge-yafang 已提交
3284
```js
G
ge-yafang 已提交
3285 3286 3287 3288 3289 3290 3291 3292 3293 3294
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 已提交
3295 3296
            }
        }
G
ge-yafang 已提交
3297 3298 3299 3300 3301
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
3302
        kvStore.getEntries('batch_test_string_key').then((entrys) => {
G
ge-yafang 已提交
3303 3304 3305 3306 3307
            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 已提交
3308
        }).catch((err) => {
G
ge-yafang 已提交
3309
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3310
        });
G
ge-yafang 已提交
3311 3312 3313 3314 3315 3316 3317
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
3318 3319


A
asfasdff 已提交
3320
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3321

3322
getEntries(query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
3323

G
ge-yafang 已提交
3324
获取与指定Query对象匹配的键值对列表,使用callback异步回调。
A
asfasdff 已提交
3325

G
ge-yafang 已提交
3326
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3327

G
ge-yafang 已提交
3328
**参数:**
A
asfasdff 已提交
3329

3330 3331
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
Z
zengyawen 已提交
3332
| query  |[Query](#query8)   | 是    |表示要匹配的键前缀。  |
G
ge-yafang 已提交
3333
| callback  |AsyncCallback&lt;[Entry](#entry)[]&gt;   | 是    |回调函数。返回与指定Query对象匹配的键值对列表。  |
A
asfasdff 已提交
3334

G
ge-yafang 已提交
3335
**示例:**
A
asfasdff 已提交
3336

G
ge-yafang 已提交
3337
```js
G
ge-yafang 已提交
3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348
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 已提交
3349 3350
            }
        }
G
ge-yafang 已提交
3351
        entries.push(entry);
A
asfasdff 已提交
3352
    }
G
ge-yafang 已提交
3353 3354 3355 3356 3357
    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");
W
wangkai 已提交
3358
        kvStore.getEntries(query, function (err,entrys) {
G
ge-yafang 已提交
3359 3360 3361 3362 3363 3364 3365 3366 3367 3368
            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 已提交
3369 3370


A
asfasdff 已提交
3371
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
3372

3373
getEntries(query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
3374

G
ge-yafang 已提交
3375
获取与指定Query对象匹配的键值对列表,使用Promise异步回调。
A
asfasdff 已提交
3376

G
ge-yafang 已提交
3377
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3378

G
ge-yafang 已提交
3379
**参数:**
A
asfasdff 已提交
3380

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

G
ge-yafang 已提交
3385
**返回值:**
A
asfasdff 已提交
3386

3387 3388
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3389
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定Query对象匹配的键值对列表。|
A
asfasdff 已提交
3390

G
ge-yafang 已提交
3391
**示例:**
A
asfasdff 已提交
3392

G
ge-yafang 已提交
3393
```js
W
wangkai 已提交
3394
let kvStore;
G
ge-yafang 已提交
3395 3396 3397 3398 3399 3400 3401 3402 3403 3404
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 已提交
3405 3406
            }
        }
G
ge-yafang 已提交
3407 3408 3409 3410 3411 3412 3413
        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");
W
wangkai 已提交
3414
        kvStore.getEntries(query).then((entrys) => {
G
ge-yafang 已提交
3415
            console.log('getEntries success');
A
asfasdff 已提交
3416
        }).catch((err) => {
G
ge-yafang 已提交
3417
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
3418
        });
G
ge-yafang 已提交
3419 3420 3421 3422 3423 3424 3425 3426
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
3427 3428


G
ge-yafang 已提交
3429
### getResultSet<sup>8+</sup><a name="singlekvstore_getresultset"></a> ###
A
asfasdff 已提交
3430

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

G
ge-yafang 已提交
3433
从KvStore数据库中获取具有指定前缀的结果集,使用callback异步回调。
A
asfasdff 已提交
3434

G
ge-yafang 已提交
3435
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3436

G
ge-yafang 已提交
3437
**参数:**
A
asfasdff 已提交
3438

3439 3440 3441
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
G
ge-yafang 已提交
3442
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;   | 是    |回调函数。返回具有指定前缀的结果集。 |
A
asfasdff 已提交
3443

G
ge-yafang 已提交
3444
**示例:**
A
asfasdff 已提交
3445

G
ge-yafang 已提交
3446
```js
G
ge-yafang 已提交
3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457
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 已提交
3458 3459
            }
        }
G
ge-yafang 已提交
3460
        entries.push(entry);
A
asfasdff 已提交
3461
    }
G
ge-yafang 已提交
3462 3463
    kvStore.putBatch(entries, async function (err, data) {
        console.log('GetResultSet putBatch success');
W
wangkai 已提交
3464
        kvStore.getResultSet('batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
3465
            console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
3466 3467 3468 3469 3470 3471 3472 3473 3474 3475
            resultSet = result;
            kvStore.closeResultSet(resultSet, function (err, data) {
                console.log('GetResultSet closeResultSet success');
            })
        });
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3476 3477


A
asfasdff 已提交
3478
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3479

3480
getResultSet(keyPrefix: string): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
3481

G
ge-yafang 已提交
3482
从KVStore数据库中获取具有指定前缀的结果集,使用Promise异步回调。
A
asfasdff 已提交
3483

G
ge-yafang 已提交
3484
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3485

G
ge-yafang 已提交
3486
**参数:**
A
asfasdff 已提交
3487

3488 3489 3490
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| keyPrefix  |string   | 是    |表示要匹配的键前缀。 |
A
asfasdff 已提交
3491

G
ge-yafang 已提交
3492
**返回值:**
A
asfasdff 已提交
3493

3494 3495
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3496
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise对象。返回具有指定前缀的结果集。|
A
asfasdff 已提交
3497

G
ge-yafang 已提交
3498
**示例:**
A
asfasdff 已提交
3499

G
ge-yafang 已提交
3500
```js
G
ge-yafang 已提交
3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511
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 已提交
3512 3513
            }
        }
G
ge-yafang 已提交
3514
        entries.push(entry);
A
asfasdff 已提交
3515
    }
G
ge-yafang 已提交
3516 3517 3518 3519 3520 3521
    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) => {
G
ge-yafang 已提交
3522
        console.log('GetResult getResultSet succeed.');
G
ge-yafang 已提交
3523 3524
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3525
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3526 3527 3528 3529 3530 3531 3532 3533 3534 3535
    });
    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 已提交
3536 3537


A
asfasdff 已提交
3538
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3539

3540
getResultSet(query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
3541

G
ge-yafang 已提交
3542
获取与指定Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
3543

G
ge-yafang 已提交
3544
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3545

G
ge-yafang 已提交
3546
**参数:**
A
asfasdff 已提交
3547

3548 3549 3550
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| query  |Query    | 是    |表示查询对象。             |
G
ge-yafang 已提交
3551
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)&gt;   | 是    |回调函数,获取与指定Query对象匹配的KvStoreResultSet对象。 |
A
asfasdff 已提交
3552

G
ge-yafang 已提交
3553
**示例:**
A
asfasdff 已提交
3554

G
ge-yafang 已提交
3555
```js
G
ge-yafang 已提交
3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566
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 已提交
3567 3568
            }
        }
G
ge-yafang 已提交
3569
        entries.push(entry);
A
asfasdff 已提交
3570
    }
G
ge-yafang 已提交
3571 3572 3573 3574
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3575
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
3576
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3577 3578 3579 3580 3581 3582 3583
            resultSet = result;
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3584 3585


A
asfasdff 已提交
3586
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3587

3588
getResultSet(query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
3589

G
ge-yafang 已提交
3590
获取与指定Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
3591

G
ge-yafang 已提交
3592
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3593

G
ge-yafang 已提交
3594
**参数:**
A
asfasdff 已提交
3595

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

G
ge-yafang 已提交
3600
**返回值:**
A
asfasdff 已提交
3601

3602 3603
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3604
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise对象。获取与指定Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
3605

G
ge-yafang 已提交
3606
**示例:**
A
asfasdff 已提交
3607

G
ge-yafang 已提交
3608
```js
G
ge-yafang 已提交
3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619
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 已提交
3620 3621
            }
        }
G
ge-yafang 已提交
3622
        entries.push(entry);
A
asfasdff 已提交
3623
    }
G
ge-yafang 已提交
3624 3625 3626 3627 3628 3629 3630 3631
    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) => {
G
ge-yafang 已提交
3632
        console.log(' getResultSet succeed.');
G
ge-yafang 已提交
3633 3634
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
3635
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3636 3637 3638 3639 3640
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
3641

W
wangkai 已提交
3642 3643
### getResultSet<sup>9+</sup> ###

W
wangkai 已提交
3644
getResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
W
wangkai 已提交
3645 3646 3647 3648 3649 3650 3651 3652 3653

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

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
W
wangkai 已提交
3654
| predicates  | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates)    | 是    |指示筛选条件,当此参数为null时,应定义处理逻辑。             |
W
wangkai 已提交
3655 3656 3657 3658 3659
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultsetsup8sup)&gt;   | 是    |回调函数,获取与指定Predicates对象匹配的KvStoreResultSet对象。 |

**示例:**

```js
W
wangkai 已提交
3660
import dataSharePredicates from './@ohos.data.dataSharePredicates';
W
wangkai 已提交
3661 3662 3663
let kvStore;
try {
    let resultSet;
W
wangkai 已提交
3664
    let predicates = new dataSharePredicates.DataSharePredicates();
W
wangkai 已提交
3665
    predicates.prefixKey("batch_test_string_key");
W
wangkai 已提交
3666
    kvStore.getResultSet(predicates, async function (err, result) {
W
wangkai 已提交
3667 3668
    console.log(' GetResultSet success');
    resultSet = result;
W
wangkai 已提交
3669
    kvStore.closeResultSet(resultSet, function (err, data) {
W
wangkai 已提交
3670 3671 3672 3673 3674 3675 3676 3677 3678
        console.log(' closeResultSet success');
        })
    });
}catch(e) {
    console.log('An unexpected error occurred. Error:' + e);
}
```
### getResultSet<sup>9+</sup> ###

W
wangkai 已提交
3679
getResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise&lt;KvStoreResultSet&gt;
W
wangkai 已提交
3680 3681 3682 3683 3684 3685 3686 3687 3688

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

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
W
wangkai 已提交
3689
| predicates  |[DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates)  | 是    |指示筛选条件,当此参数为null时,应定义处理逻辑。            |
W
wangkai 已提交
3690 3691 3692 3693 3694 3695 3696 3697 3698 3699

**返回值:**

| 类型    | 说明       |
| ------  | -------   |
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)&gt; |Promise实例,用于获取异步返回结果。|

**示例:**

```js
W
wangkai 已提交
3700
import dataSharePredicates from './@ohos.data.dataSharePredicates';
W
wangkai 已提交
3701 3702 3703
let kvStore;
try {
	let resultSet;
W
wangkai 已提交
3704
    let predicates =  new dataSharePredicates.DataSharePredicates();
W
wangkai 已提交
3705
    predicates.prefixKey("batch_test_string_key");
W
wangkai 已提交
3706
    kvStore.getResultSet(predicates) .then((result) => {
W
wangkai 已提交
3707 3708
        console.log(' GetResultSet success');
        resultSet = result;
W
wangkai 已提交
3709
        kvStore.closeResultSet(resultSet, fun ction (err, data) {
W
wangkai 已提交
3710 3711 3712 3713 3714 3715 3716
            console.log(' closeResultSet success');
        })
    });
}catch(e) {
	console.log('An unexpected error occurred. Error:' + e);
}
```
A
asfasdff 已提交
3717
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3718

3719
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3720

G
ge-yafang 已提交
3721
关闭由[SingleKvStore.getResultSet](#singlekvstore_getresultset)返回的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
3722

G
ge-yafang 已提交
3723
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3724

G
ge-yafang 已提交
3725
**参数:**
A
asfasdff 已提交
3726

3727 3728
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3729 3730
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。             |
A
asfasdff 已提交
3731

G
ge-yafang 已提交
3732
**示例:**
A
asfasdff 已提交
3733

G
ge-yafang 已提交
3734
```js
G
ge-yafang 已提交
3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748
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 已提交
3749 3750


A
asfasdff 已提交
3751
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
3752

3753
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
3754

G
ge-yafang 已提交
3755
关闭由[SingleKvStore.getResultSet](#singlekvstore_getresultset)返回的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
3756

G
ge-yafang 已提交
3757
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3758

G
ge-yafang 已提交
3759
**参数:**
A
asfasdff 已提交
3760

3761 3762
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3763
| resultSet  |[KvStoreResultSet](#kvstoreresultset8)   | 是    |表示要关闭的KvStoreResultSet对象。             |
A
asfasdff 已提交
3764

G
ge-yafang 已提交
3765
**返回值:**
A
asfasdff 已提交
3766

3767 3768
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3769
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3770

G
ge-yafang 已提交
3771
**示例:**
A
asfasdff 已提交
3772

G
ge-yafang 已提交
3773
```js
G
ge-yafang 已提交
3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785
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 已提交
3786 3787


A
asfasdff 已提交
3788
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
3789

3790
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
3791

G
ge-yafang 已提交
3792
获取与指定Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
3793

G
ge-yafang 已提交
3794
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3795

G
ge-yafang 已提交
3796
**参数:**
A
asfasdff 已提交
3797

3798 3799
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
3800
| query  |[Query](#query8)   | 是    |表示查询对象。         |
G
ge-yafang 已提交
3801
| callback  |AsyncCallback&lt;number&gt;   | 是    |回调函数。返回与指定Query对象匹配的结果数。         |
A
asfasdff 已提交
3802

G
ge-yafang 已提交
3803
**示例:**
A
asfasdff 已提交
3804

G
ge-yafang 已提交
3805
```js
G
ge-yafang 已提交
3806 3807 3808 3809 3810 3811 3812 3813 3814 3815
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 已提交
3816 3817
            }
        }
G
ge-yafang 已提交
3818
        entries.push(entry);
A
asfasdff 已提交
3819
    }
G
ge-yafang 已提交
3820 3821 3822 3823
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
3824
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
3825
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
3826 3827 3828 3829 3830 3831
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3832 3833


A
asfasdff 已提交
3834
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
3835

3836
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
3837

G
ge-yafang 已提交
3838
获取与指定Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
3839

G
ge-yafang 已提交
3840
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3841

G
ge-yafang 已提交
3842
**参数:**
A
asfasdff 已提交
3843

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

G
ge-yafang 已提交
3848
**返回值:**
A
asfasdff 已提交
3849

3850 3851
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3852
|Promise&lt;number&gt; |Promise对象。获取与指定Query对象匹配的结果数。|
A
asfasdff 已提交
3853

G
ge-yafang 已提交
3854
**示例:**
A
asfasdff 已提交
3855

G
ge-yafang 已提交
3856
```js
G
ge-yafang 已提交
3857 3858 3859 3860 3861 3862 3863 3864 3865 3866
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 已提交
3867 3868
            }
        }
G
ge-yafang 已提交
3869
        entries.push(entry);
A
asfasdff 已提交
3870
    }
G
ge-yafang 已提交
3871 3872 3873 3874 3875 3876 3877 3878
    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) => {
G
ge-yafang 已提交
3879
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
3880
    }).catch((err) => {
G
ge-yafang 已提交
3881
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
3882 3883 3884 3885 3886
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
3887 3888


A
asfasdff 已提交
3889
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
3890

3891
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
3892

G
ge-yafang 已提交
3893
删除指定设备的数据,使用callback异步回调。
A
asfasdff 已提交
3894

G
ge-yafang 已提交
3895
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3896

G
ge-yafang 已提交
3897
**参数:**
A
asfasdff 已提交
3898

3899 3900 3901 3902
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
| callback  |AsyncCallback&lt;void&gt;   | 是    |回调函数。      |
A
asfasdff 已提交
3903

G
ge-yafang 已提交
3904
**示例:**
A
asfasdff 已提交
3905

G
ge-yafang 已提交
3906
```js
G
ge-yafang 已提交
3907 3908 3909 3910 3911 3912 3913
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';
W
wangkai 已提交
3914
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
3915 3916 3917 3918
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
3919
                kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
3920 3921 3922
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
3923
        });
G
ge-yafang 已提交
3924 3925 3926 3927 3928
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
3929 3930


A
asfasdff 已提交
3931
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
3932

3933
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
3934

G
ge-yafang 已提交
3935
删除指定设备的数据,使用Promise异步回调。
A
asfasdff 已提交
3936

G
ge-yafang 已提交
3937
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3938

G
ge-yafang 已提交
3939
**参数:**
A
asfasdff 已提交
3940

3941 3942 3943
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string   | 是    |表示要删除设备的名称。       |
A
asfasdff 已提交
3944

G
ge-yafang 已提交
3945
**返回值:**
A
asfasdff 已提交
3946

3947 3948
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
3949
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
3950

G
ge-yafang 已提交
3951
**示例:**
A
asfasdff 已提交
3952

G
ge-yafang 已提交
3953
```js
G
ge-yafang 已提交
3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977
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 已提交
3978 3979


G
ge-yafang 已提交
3980
### on('syncComplete')<sup>8+</sup> ###
A
asfasdff 已提交
3981

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

G
ge-yafang 已提交
3984
订阅同步完成事件回调通知。
A
asfasdff 已提交
3985

G
ge-yafang 已提交
3986
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
3987

G
ge-yafang 已提交
3988
**参数:**
A
asfasdff 已提交
3989

3990 3991
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
3992
| event  |string   | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。    |
G
ge-yafang 已提交
3993
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 是    |回调函数。用于向调用方发送同步结果的回调。    |
A
asfasdff 已提交
3994

G
ge-yafang 已提交
3995
**示例:**
A
asfasdff 已提交
3996

G
ge-yafang 已提交
3997
```js
G
ge-yafang 已提交
3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013
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 已提交
4014 4015


G
ge-yafang 已提交
4016
### off('syncComplete')<sup>8+</sup> ###
A
asfasdff 已提交
4017

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

G
ge-yafang 已提交
4020
取消订阅同步完成事件回调通知。
A
asfasdff 已提交
4021

G
ge-yafang 已提交
4022
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
4023

G
ge-yafang 已提交
4024
**参数:**
A
asfasdff 已提交
4025

4026 4027
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4028
| event  |string   | 是    |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。    |
G
ge-yafang 已提交
4029
| syncCallback  |Callback&lt;Array&lt;[string, number]&gt;&gt;   | 否    |回调函数。用于向调用方发送同步结果的回调。    |
4030

G
ge-yafang 已提交
4031
**示例:**
A
asfasdff 已提交
4032

G
ge-yafang 已提交
4033
```js
G
ge-yafang 已提交
4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044
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 已提交
4045

W
wangkai 已提交
4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087
### on('dataChange')<sup>9+</sup> ###

on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void

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

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |string  | 是    |订阅的事件名,固定为'dataChange',表示数据变更事件。       |
| type  |[SubscribeType](#subscribetype) | 是    |表示订阅的类型。     |
| listener |Callback&lt;[ChangeNotification](#changenotification)&gt; | 是    |回调函数。 |

**示例:**

```js
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});

```

### off('dataChange')<sup>9+</sup> ###

off(event:'dataChange', listener?: Callback&lt;ChangeNotification&gt;): void

取消订阅数据变更通知,此方法为同步方法。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |string  | 是    |取消订阅的事件名,固定为'dataChange',表示数据变更事件。       |
| listener |Callback&lt;[ChangeNotification](#changenotification)&gt; |否    |回调函数。 |

**示例:**
A
asfasdff 已提交
4088

W
wangkai 已提交
4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099
```js
let kvStore;
kvStore.on('dataChange', function (data) {
    console.log("callback call data: " + data);
});
kvStore.off('dataChange', function (data) {
    console.log("callback call data: " + data);
});
```
### sync<sup>7+</sup>

A
asfasdff 已提交
4100

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

G
ge-yafang 已提交
4103
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
G
ge-yafang 已提交
4104

Z
zuojiangjiang 已提交
4105
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
Z
zengyawen 已提交
4106

G
ge-yafang 已提交
4107
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
4108

G
ge-yafang 已提交
4109
**参数:**
A
asfasdff 已提交
4110

4111 4112 4113
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIdList  |string[]  | 是    |同一组网环境下,需要同步的设备的deviceId列表。    |
G
ge-yafang 已提交
4114
| mode  |[SyncMode](#syncmode)   | 是   |同步模式。    |
4115
| allowedDelayMs  |number   | 否   |可选参数,允许延时时间,单位:ms(毫秒)。   |
A
asfasdff 已提交
4116

G
ge-yafang 已提交
4117
**示例:**
A
asfasdff 已提交
4118

G
ge-yafang 已提交
4119
```js
G
ge-yafang 已提交
4120 4121 4122
let kvStore;
kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000);
```
A
asfasdff 已提交
4123

W
wangkai 已提交
4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137
### sync<sup>9+</sup>
sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void

在手动同步方式下,触发数据库同步,此方法为同步方法。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)

**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIds  |string[]  | 是    |同一组网环境下,需要同步的设备的deviceId列表。    |
W
wangkai 已提交
4138
| mode            |[SyncMode](#syncmode)  | 是    |同步模式。  |
W
wangkai 已提交
4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158
| query  |[Query](#querysup8sup)   | 是   |表示数据库的查询谓词条件  |
| delayMs  |number   | 否   |可选参数,允许延时时间,单位:ms(毫秒)。   |

**示例:**

```js
let kvstore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
W
wangkai 已提交
4159
        kvStore.sync(devices, query, mode , 1000);
W
wangkai 已提交
4160 4161 4162 4163 4164 4165
    });
}catch(e) {
    console.log('Sync e' + e);
}
```

A
asfasdff 已提交
4166
### setSyncParam<sup>8+</sup> ###
A
asfasdff 已提交
4167

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

G
ge-yafang 已提交
4170
设置数据库同步允许的默认延迟,使用callback异步回调。
A
asfasdff 已提交
4171

G
ge-yafang 已提交
4172
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
4173

G
ge-yafang 已提交
4174
**参数:**
A
asfasdff 已提交
4175

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

G
ge-yafang 已提交
4181
**示例:**
A
asfasdff 已提交
4182

G
ge-yafang 已提交
4183
```js
G
ge-yafang 已提交
4184 4185 4186 4187 4188 4189 4190 4191 4192 4193
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 已提交
4194 4195


A
asfasdff 已提交
4196
### setSyncParam<sup>8+</sup> ###
A
asfasdff 已提交
4197

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

G
ge-yafang 已提交
4200
设置数据库同步允许的默认延迟,使用Promise异步回调。
A
asfasdff 已提交
4201

G
ge-yafang 已提交
4202
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
4203

G
ge-yafang 已提交
4204
**参数:**
A
asfasdff 已提交
4205

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

A
asfasdff 已提交
4210

G
ge-yafang 已提交
4211
**返回值:**
A
asfasdff 已提交
4212

4213 4214
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4215
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
4216

G
ge-yafang 已提交
4217
**示例:**
A
asfasdff 已提交
4218

G
ge-yafang 已提交
4219
```js
G
ge-yafang 已提交
4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231
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 已提交
4232 4233


A
asfasdff 已提交
4234
### getSecurityLevel<sup>8+</sup> ###
A
asfasdff 已提交
4235

4236
getSecurityLevel(callback: AsyncCallback&lt;SecurityLevel&gt;): void
A
asfasdff 已提交
4237

G
ge-yafang 已提交
4238
获取数据库的安全级别,使用callback异步回调。
A
asfasdff 已提交
4239

G
ge-yafang 已提交
4240
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
4241

G
ge-yafang 已提交
4242
**参数:**
A
asfasdff 已提交
4243

4244 4245
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
4246
| callback  |AsyncCallback&lt;[SecurityLevel](#securitylevel)&gt;  | 是    |回调函数。返回数据库的安全级别。    |
A
asfasdff 已提交
4247

G
ge-yafang 已提交
4248
**示例:**
A
asfasdff 已提交
4249

G
ge-yafang 已提交
4250
```js
G
ge-yafang 已提交
4251 4252 4253 4254 4255 4256 4257 4258 4259
let kvStore;
try {
    kvStore.getSecurityLevel(function (err,data) {
        console.log('getSecurityLevel success');
    });
}catch(e) {
    console.log('GetSecurityLeve e ' + e);
}
```
A
asfasdff 已提交
4260 4261


A
asfasdff 已提交
4262
### getSecurityLevel<sup>8+</sup> ###
A
asfasdff 已提交
4263

4264
getSecurityLevel(): Promise&lt;SecurityLevel&gt;
A
asfasdff 已提交
4265

G
ge-yafang 已提交
4266
获取数据库的安全级别,使用Promise异步回调。
A
asfasdff 已提交
4267

G
ge-yafang 已提交
4268
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
4269

G
ge-yafang 已提交
4270
**返回值:**
A
asfasdff 已提交
4271

4272 4273
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4274
|Promise&lt;[SecurityLevel](#securitylevel)&gt; |Promise对象。返回数据库的安全级别。|
4275

G
ge-yafang 已提交
4276
**示例:**
A
asfasdff 已提交
4277

G
ge-yafang 已提交
4278
```js
G
ge-yafang 已提交
4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289
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 已提交
4290 4291


A
asfasdff 已提交
4292
## DeviceKVStore<sup>8+</sup> ##
A
asfasdff 已提交
4293

G
ge-yafang 已提交
4294 4295 4296 4297 4298 4299 4300
设备协同数据库,继承自KVStore,提供查询数据和同步数据的方法。

设备协同数据库,以设备维度对数据进行区分,每台设备仅能写入和修改本设备的数据,其它设备的数据对其是只读的,无法修改其它设备的数据。

比如,可以使用设备协同数据库实现设备间的图片分享,可以查看其他设备的图片,但无法修改和删除其他设备的图片。

在调用DeviceKVStore的方法前,需要先通过[getKVStore](#getkvstore)构建一个DeviceKVStore实例。
A
asfasdff 已提交
4301

A
asfasdff 已提交
4302
### get<sup>8+</sup> ###
A
asfasdff 已提交
4303

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

G
ge-yafang 已提交
4306
获取与指定设备ID和key匹配的string值,使用callback异步回调。
A
asfasdff 已提交
4307

G
ge-yafang 已提交
4308
**系统能力:**   SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4309

G
ge-yafang 已提交
4310
**参数:**
A
asfasdff 已提交
4311

4312 4313 4314
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
4315
| key       |string  | 是    |表示要查询key值的键。    |
G
ge-yafang 已提交
4316
| callback  |AsyncCallback&lt;boolean\|string\|number\|Uint8Array&gt;  | 是    |回调函数,返回匹配给定条件的字符串值。    |
A
asfasdff 已提交
4317

G
ge-yafang 已提交
4318
**示例:**
A
asfasdff 已提交
4319

G
ge-yafang 已提交
4320
```js
G
ge-yafang 已提交
4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334
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 已提交
4335 4336


A
asfasdff 已提交
4337
### get<sup>8+</sup> ###
A
asfasdff 已提交
4338

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

G
ge-yafang 已提交
4341
获取与指定设备ID和key匹配的string值,使用Promise异步回调。
A
asfasdff 已提交
4342

G
ge-yafang 已提交
4343
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4344

G
ge-yafang 已提交
4345
**参数:**
A
asfasdff 已提交
4346

4347 4348 4349
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
G
ge-yafang 已提交
4350
| key       |string  | 是    |表示要查询key值的键。    |
A
asfasdff 已提交
4351

G
ge-yafang 已提交
4352
**返回值:**
A
asfasdff 已提交
4353

4354 4355
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4356
|Promise&lt;boolean\|string\|number\|Uint8Array&gt; |Promise对象。返回匹配给定条件的字符串值。|
A
asfasdff 已提交
4357

G
ge-yafang 已提交
4358
**示例:**
A
asfasdff 已提交
4359

G
ge-yafang 已提交
4360
```js
G
ge-yafang 已提交
4361 4362 4363 4364 4365 4366 4367 4368 4369 4370
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 已提交
4371
        });
G
ge-yafang 已提交
4372 4373 4374 4375 4376 4377 4378
    }).catch((error) => {
        console.log('put error' + error);
    });
} catch (e) {
    console.log('Get e ' + e);
}
```
A
asfasdff 已提交
4379 4380


A
asfasdff 已提交
4381
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4382

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

G
ge-yafang 已提交
4385
获取与指定设备ID和key前缀匹配的所有键值对,使用callback异步回调。
A
asfasdff 已提交
4386

G
ge-yafang 已提交
4387
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4388

G
ge-yafang 已提交
4389
**参数:**
A
asfasdff 已提交
4390

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

G
ge-yafang 已提交
4397
**示例:**
A
asfasdff 已提交
4398

G
ge-yafang 已提交
4399
```js
G
ge-yafang 已提交
4400 4401 4402 4403 4404 4405 4406 4407 4408 4409
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 已提交
4410 4411
            }
        }
G
ge-yafang 已提交
4412
        entries.push(entry);
A
asfasdff 已提交
4413
    }
G
ge-yafang 已提交
4414 4415 4416
    console.log('entries: ' + entries);
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
W
wangkai 已提交
4417
        kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err,entrys) {
G
ge-yafang 已提交
4418 4419 4420 4421 4422 4423 4424 4425 4426
            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 已提交
4427 4428


A
asfasdff 已提交
4429
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4430

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

G
ge-yafang 已提交
4433
获取与指定设备ID和key前缀匹配的所有键值对,使用Promise异步回调。
A
asfasdff 已提交
4434

G
ge-yafang 已提交
4435
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4436

G
ge-yafang 已提交
4437
**参数:**
A
asfasdff 已提交
4438

4439 4440 4441 4442
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4443

G
ge-yafang 已提交
4444
**返回值:**
A
asfasdff 已提交
4445

4446 4447
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4448
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回匹配给定条件的所有键值对的列表。|
A
asfasdff 已提交
4449

G
ge-yafang 已提交
4450
**示例:**
A
asfasdff 已提交
4451

G
ge-yafang 已提交
4452
```js
G
ge-yafang 已提交
4453 4454 4455 4456 4457 4458 4459 4460 4461 4462
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 已提交
4463 4464
            }
        }
G
ge-yafang 已提交
4465 4466 4467 4468 4469
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
W
wangkai 已提交
4470
        kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entrys) => {
G
ge-yafang 已提交
4471 4472 4473 4474 4475
            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 已提交
4476
        }).catch((err) => {
G
ge-yafang 已提交
4477
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4478
        });
G
ge-yafang 已提交
4479 4480 4481 4482 4483 4484 4485
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('PutBatch e ' + e);
}
```
A
asfasdff 已提交
4486 4487


A
asfasdff 已提交
4488
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4489

4490
getEntries(query: Query, callback: AsyncCallback&lt;Entry[]&gt;): void
A
asfasdff 已提交
4491

G
ge-yafang 已提交
4492
获取与指定Query对象匹配的键值对列表,使用callback异步回调。
A
asfasdff 已提交
4493

G
ge-yafang 已提交
4494
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4495

G
ge-yafang 已提交
4496
**参数:**
A
asfasdff 已提交
4497

4498 4499
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4500
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4501
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数,返回与指定Query对象匹配的键值对列表。    |
A
asfasdff 已提交
4502

G
ge-yafang 已提交
4503
**示例:**
A
asfasdff 已提交
4504

G
ge-yafang 已提交
4505
```js
G
ge-yafang 已提交
4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516
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 已提交
4517 4518
            }
        }
G
ge-yafang 已提交
4519
        entries.push(entry);
A
asfasdff 已提交
4520
    }
G
ge-yafang 已提交
4521 4522 4523 4524 4525 4526
    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");
        query.deviceId('localDeviceId');
W
wangkai 已提交
4527
        kvStore.getEntries(query, function (err,entrys) {
G
ge-yafang 已提交
4528 4529 4530 4531 4532 4533 4534 4535 4536 4537
            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 已提交
4538 4539


A
asfasdff 已提交
4540
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4541

4542
getEntries(query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4543

G
ge-yafang 已提交
4544
获取与指定Query对象匹配的键值对列表,使用Promise异步回调。
A
asfasdff 已提交
4545

G
ge-yafang 已提交
4546
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4547

G
ge-yafang 已提交
4548
**参数:**
A
asfasdff 已提交
4549

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

G
ge-yafang 已提交
4554
**返回值:**
A
asfasdff 已提交
4555

4556 4557
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4558
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定Query对象匹配的键值对列表。|
A
asfasdff 已提交
4559

G
ge-yafang 已提交
4560
**示例:**
A
asfasdff 已提交
4561

G
ge-yafang 已提交
4562
```js
G
ge-yafang 已提交
4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573
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 已提交
4574 4575
            }
        }
G
ge-yafang 已提交
4576 4577 4578 4579 4580 4581 4582
        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");
W
wangkai 已提交
4583
        kvStore.getEntries(query).then((entrys) => {
G
ge-yafang 已提交
4584
            console.log('getEntries success');
A
asfasdff 已提交
4585
        }).catch((err) => {
G
ge-yafang 已提交
4586
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4587
        });
G
ge-yafang 已提交
4588 4589 4590 4591 4592 4593 4594 4595
    }).catch((err) => {
        console.log('GetEntries putBatch fail ' + JSON.stringify(err))
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4596 4597


A
asfasdff 已提交
4598
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4599

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

G
ge-yafang 已提交
4602
获取与指定设备ID和Query对象匹配的键值对列表,使用callback异步回调。
A
asfasdff 已提交
4603

G
ge-yafang 已提交
4604
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4605

G
ge-yafang 已提交
4606
**参数:**
A
asfasdff 已提交
4607

4608 4609 4610
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4611
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4612
| callback |AsyncCallback&lt;[Entry](#entry)[]&gt;  | 是    |回调函数。返回与指定设备ID和Query对象匹配的键值对列表。    |
A
asfasdff 已提交
4613

G
ge-yafang 已提交
4614
**示例:**
A
asfasdff 已提交
4615

G
ge-yafang 已提交
4616
```js
G
ge-yafang 已提交
4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627
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 已提交
4628 4629
            }
        }
G
ge-yafang 已提交
4630
        entries.push(entry);
A
asfasdff 已提交
4631
    }
G
ge-yafang 已提交
4632 4633 4634 4635 4636 4637
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
W
wangkai 已提交
4638
        kvStore.getEntries('localDeviceId', query, function (err,entrys) {
G
ge-yafang 已提交
4639 4640 4641 4642 4643 4644 4645 4646 4647 4648
            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 已提交
4649 4650


A
asfasdff 已提交
4651
### getEntries<sup>8+</sup> ###
A
asfasdff 已提交
4652

4653
getEntries(deviceId: string, query: Query): Promise&lt;Entry[]&gt;
A
asfasdff 已提交
4654

G
ge-yafang 已提交
4655
获取与指定设备ID和Query对象匹配的键值对列表,使用Promise异步回调。
A
asfasdff 已提交
4656

G
ge-yafang 已提交
4657
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4658

G
ge-yafang 已提交
4659
**参数:**
A
asfasdff 已提交
4660

4661 4662 4663
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |键值对所属的设备ID。    |
Z
zengyawen 已提交
4664
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4665

G
ge-yafang 已提交
4666
**返回值:**
A
asfasdff 已提交
4667

4668 4669
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4670
|Promise&lt;[Entry](#entry)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。|
A
asfasdff 已提交
4671

G
ge-yafang 已提交
4672
**示例:**
A
asfasdff 已提交
4673

G
ge-yafang 已提交
4674
```js
G
ge-yafang 已提交
4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685
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 已提交
4686 4687
            }
        }
G
ge-yafang 已提交
4688 4689 4690 4691 4692 4693 4694 4695
        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");
W
wangkai 已提交
4696
        kvStore.getEntries('localDeviceId', query).then((entrys) => {
G
ge-yafang 已提交
4697
            console.log('getEntries success');
A
asfasdff 已提交
4698
        }).catch((err) => {
G
ge-yafang 已提交
4699
            console.log('getEntries fail ' + JSON.stringify(err));
A
asfasdff 已提交
4700
        });
G
ge-yafang 已提交
4701 4702 4703 4704 4705 4706 4707 4708
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    console.log('GetEntries success');
}catch(e) {
    console.log('GetEntries e ' + e);
}
```
A
asfasdff 已提交
4709 4710


G
ge-yafang 已提交
4711
### getResultSet<sup>8+</sup><a name="devicekvstore_getresultset"></a> ###
A
asfasdff 已提交
4712

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

G
ge-yafang 已提交
4715
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4716

G
ge-yafang 已提交
4717
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4718

G
ge-yafang 已提交
4719
**参数:**
A
asfasdff 已提交
4720

4721 4722 4723 4724
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
G
ge-yafang 已提交
4725
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4726

G
ge-yafang 已提交
4727
**示例:**
A
asfasdff 已提交
4728

G
ge-yafang 已提交
4729
```js
G
ge-yafang 已提交
4730 4731 4732 4733
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
G
ge-yafang 已提交
4734
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4735
        resultSet = result;
W
wangkai 已提交
4736
        kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4737 4738 4739 4740 4741 4742 4743
            console.log('closeResultSet success');
        })
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4744 4745


A
asfasdff 已提交
4746
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4747

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

G
ge-yafang 已提交
4750
获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4751

G
ge-yafang 已提交
4752
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4753

G
ge-yafang 已提交
4754
**参数:**
A
asfasdff 已提交
4755

4756 4757 4758 4759
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要查询其数据的设备。    |
| keyPrefix |string  | 是    |表示要匹配的键前缀。    |
A
asfasdff 已提交
4760

G
ge-yafang 已提交
4761
**返回值:**
A
asfasdff 已提交
4762

4763 4764
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4765
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4766

G
ge-yafang 已提交
4767
**示例:**
A
asfasdff 已提交
4768

G
ge-yafang 已提交
4769
```js
G
ge-yafang 已提交
4770 4771 4772 4773
let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
G
ge-yafang 已提交
4774
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4775 4776
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4777
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4778 4779 4780 4781 4782 4783 4784 4785 4786 4787
    });
    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 已提交
4788 4789


A
asfasdff 已提交
4790
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4791

4792
getResultSet(query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4793

G
ge-yafang 已提交
4794
获取与指定Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4795

G
ge-yafang 已提交
4796
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4797

G
ge-yafang 已提交
4798
**参数:**
A
asfasdff 已提交
4799

4800 4801
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
4802
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4803
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数,返回与指定Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4804

G
ge-yafang 已提交
4805
**示例:**
A
asfasdff 已提交
4806

G
ge-yafang 已提交
4807
```js
G
ge-yafang 已提交
4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818
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 已提交
4819 4820
            }
        }
G
ge-yafang 已提交
4821
        entries.push(entry);
A
asfasdff 已提交
4822
    }
G
ge-yafang 已提交
4823 4824 4825 4826 4827
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
W
wangkai 已提交
4828
        kvStore.getResultSet(query, async function (err, result) {
G
ge-yafang 已提交
4829
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4830
            resultSet = result;
W
wangkai 已提交
4831
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4832 4833 4834 4835 4836 4837 4838 4839
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4840 4841


A
asfasdff 已提交
4842
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4843

4844
getResultSet(query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4845

G
ge-yafang 已提交
4846
获取与指定Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4847

G
ge-yafang 已提交
4848
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4849

G
ge-yafang 已提交
4850
**参数:**
A
asfasdff 已提交
4851

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

G
ge-yafang 已提交
4856
**返回值:**
A
asfasdff 已提交
4857

4858 4859
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4860
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4861

G
ge-yafang 已提交
4862
**示例:**
A
asfasdff 已提交
4863

G
ge-yafang 已提交
4864
```js
G
ge-yafang 已提交
4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875
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 已提交
4876 4877
            }
        }
G
ge-yafang 已提交
4878
        entries.push(entry);
A
asfasdff 已提交
4879
    }
G
ge-yafang 已提交
4880 4881 4882 4883 4884 4885 4886 4887 4888 4889
    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) => {
G
ge-yafang 已提交
4890
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
4891 4892
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
4893
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
4894 4895 4896 4897 4898 4899 4900 4901 4902 4903
    });
    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 已提交
4904 4905


A
asfasdff 已提交
4906
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4907

4908
getResultSet(deviceId: string, query: Query, callback: AsyncCallback&lt;KvStoreResultSet&gt;): void
A
asfasdff 已提交
4909

G
ge-yafang 已提交
4910
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
4911

G
ge-yafang 已提交
4912
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4913

G
ge-yafang 已提交
4914
**参数:**
A
asfasdff 已提交
4915

4916 4917 4918
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4919
| query  |[Query](#query8)  | 是    |表示查询对象。    |
G
ge-yafang 已提交
4920
| callback  |AsyncCallback&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt;  | 是  |回调函数。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。    |
A
asfasdff 已提交
4921

G
ge-yafang 已提交
4922
**示例:**
A
asfasdff 已提交
4923

G
ge-yafang 已提交
4924
```js
G
ge-yafang 已提交
4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935
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 已提交
4936 4937
            }
        }
G
ge-yafang 已提交
4938
        entries.push(entry);
A
asfasdff 已提交
4939
    }
G
ge-yafang 已提交
4940 4941 4942 4943
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
4944
        kvStore.getResultSet('localDeviceId', query, async function (err, result) {
G
ge-yafang 已提交
4945
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
4946
            resultSet = result;
W
wangkai 已提交
4947
            kvStore.closeResultSet(resultSet, function (err, data) {
G
ge-yafang 已提交
4948 4949 4950 4951 4952 4953 4954 4955
                console.log('closeResultSet success');
            })
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}
```
A
asfasdff 已提交
4956 4957


A
asfasdff 已提交
4958
### getResultSet<sup>8+</sup> ###
A
asfasdff 已提交
4959

4960
getResultSet(deviceId: string, query: Query): Promise&lt;KvStoreResultSet&gt;
A
asfasdff 已提交
4961

G
ge-yafang 已提交
4962
获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
4963

G
ge-yafang 已提交
4964
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
4965

G
ge-yafang 已提交
4966
**参数:**
A
asfasdff 已提交
4967

4968 4969 4970
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
4971
| query  |[Query](#query8)  | 是    |表示查询对象。    |
A
asfasdff 已提交
4972

G
ge-yafang 已提交
4973
**返回值:**
A
asfasdff 已提交
4974

4975 4976
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
4977
|Promise&lt;[KvStoreResultSet](#kvstoreresultset8)[]&gt; |Promise对象。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。|
A
asfasdff 已提交
4978

G
ge-yafang 已提交
4979
**示例:**
A
asfasdff 已提交
4980

G
ge-yafang 已提交
4981
```js
G
ge-yafang 已提交
4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992
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 已提交
4993 4994
            }
        }
G
ge-yafang 已提交
4995
        entries.push(entry);
A
asfasdff 已提交
4996
    }
G
ge-yafang 已提交
4997 4998 4999 5000 5001 5002 5003 5004
    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) => {
G
ge-yafang 已提交
5005
        console.log('GetResultSet getResultSet succeed.');
G
ge-yafang 已提交
5006 5007
        resultSet = result;
    }).catch((err) => {
G
ge-yafang 已提交
5008
        console.log('GetResultSet getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021
    });
    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 已提交
5022 5023


A
asfasdff 已提交
5024
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
5025

5026
closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
5027

G
ge-yafang 已提交
5028
关闭由[DeviceKVStore.getResultSet](#devicekvstore_getresultset)返回的KvStoreResultSet对象,使用callback异步回调。
A
asfasdff 已提交
5029

G
ge-yafang 已提交
5030
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5031

G
ge-yafang 已提交
5032
**参数:**
A
asfasdff 已提交
5033

5034 5035
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5036
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
5037
| callback   |AsyncCallback&lt;void&gt;                 | 是    |回调函数。    |
A
asfasdff 已提交
5038

G
ge-yafang 已提交
5039
**示例:**
A
asfasdff 已提交
5040

G
ge-yafang 已提交
5041
```js
G
ge-yafang 已提交
5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056
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 已提交
5057 5058


A
asfasdff 已提交
5059
### closeResultSet<sup>8+</sup> ###
A
asfasdff 已提交
5060

5061
closeResultSet(resultSet: KvStoreResultSet): Promise&lt;void&gt;
A
asfasdff 已提交
5062

G
ge-yafang 已提交
5063
关闭由[DeviceKVStore.getResultSet](#devicekvstore_getresultset)返回的KvStoreResultSet对象,使用Promise异步回调。
A
asfasdff 已提交
5064

G
ge-yafang 已提交
5065
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5066

G
ge-yafang 已提交
5067
**参数:**
A
asfasdff 已提交
5068

5069 5070
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5071
| resultSet  |[KvStoreResultSet](#getresultset8)  | 是    |指示要关闭的KvStoreResultSet对象。   |
A
asfasdff 已提交
5072

G
ge-yafang 已提交
5073
**返回值:**
A
asfasdff 已提交
5074

5075 5076
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5077
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
5078

G
ge-yafang 已提交
5079
**示例:**
A
asfasdff 已提交
5080

G
ge-yafang 已提交
5081
```js
G
ge-yafang 已提交
5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094
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 已提交
5095 5096


A
asfasdff 已提交
5097
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
5098

5099
getResultSize(query: Query, callback: AsyncCallback&lt;number&gt;): void
A
asfasdff 已提交
5100

G
ge-yafang 已提交
5101
获取与指定Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
5102

G
ge-yafang 已提交
5103
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5104

G
ge-yafang 已提交
5105
**参数:**
A
asfasdff 已提交
5106

5107 5108
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
Z
zengyawen 已提交
5109
| query     |[Query](#query8)       | 是    |表示查询对象。    |
G
ge-yafang 已提交
5110
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数,返回与指定Query对象匹配的结果数。    |
A
asfasdff 已提交
5111

G
ge-yafang 已提交
5112
**示例:**
A
asfasdff 已提交
5113

G
ge-yafang 已提交
5114
```js
G
ge-yafang 已提交
5115 5116 5117 5118 5119 5120 5121 5122 5123 5124
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 已提交
5125 5126
            }
        }
G
ge-yafang 已提交
5127
        entries.push(entry);
A
asfasdff 已提交
5128
    }
G
ge-yafang 已提交
5129 5130 5131 5132 5133
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
W
wangkai 已提交
5134
        kvStore.getResultSize(query, async function (err, resultSize) {
G
ge-yafang 已提交
5135
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
5136 5137 5138 5139 5140 5141
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5142 5143


A
asfasdff 已提交
5144
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
5145

5146
getResultSize(query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
5147

G
ge-yafang 已提交
5148
获取与指定Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
5149

G
ge-yafang 已提交
5150
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5151

G
ge-yafang 已提交
5152
**参数:**
A
asfasdff 已提交
5153

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

G
ge-yafang 已提交
5158
**返回值:**
A
asfasdff 已提交
5159

5160 5161
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5162
|Promise&lt;number&gt; |Promise对象。返回与指定Query对象匹配的结果数。|
A
asfasdff 已提交
5163

G
ge-yafang 已提交
5164
**示例:**
A
asfasdff 已提交
5165

G
ge-yafang 已提交
5166
```js
G
ge-yafang 已提交
5167 5168 5169 5170 5171 5172 5173 5174 5175 5176
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 已提交
5177 5178
            }
        }
G
ge-yafang 已提交
5179
        entries.push(entry);
A
asfasdff 已提交
5180
    }
G
ge-yafang 已提交
5181 5182 5183 5184 5185 5186 5187 5188 5189
    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) => {
G
ge-yafang 已提交
5190
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
5191
    }).catch((err) => {
G
ge-yafang 已提交
5192
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5193 5194 5195 5196 5197
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5198 5199


A
asfasdff 已提交
5200
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
5201

A
asfasdff 已提交
5202
getResultSize(deviceId: string, query: Query, callback: AsyncCallback&lt;number&gt;): void;
A
asfasdff 已提交
5203

G
ge-yafang 已提交
5204
获取与指定设备ID和Query对象匹配的结果数,使用callback异步回调。
A
asfasdff 已提交
5205

G
ge-yafang 已提交
5206
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5207

G
ge-yafang 已提交
5208
**参数:**
A
asfasdff 已提交
5209

5210 5211 5212
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
5213
| query     |[Query](#query8)       | 是    |表示查询对象。    |
G
ge-yafang 已提交
5214
| callback  |AsyncCallback&lt;number&gt;  | 是    |回调函数。返回与指定设备ID和Query对象匹配的结果数。    |
A
asfasdff 已提交
5215

G
ge-yafang 已提交
5216
**示例:**
A
asfasdff 已提交
5217

G
ge-yafang 已提交
5218
```js
G
ge-yafang 已提交
5219 5220 5221 5222 5223 5224 5225 5226 5227 5228
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 已提交
5229 5230
            }
        }
G
ge-yafang 已提交
5231
        entries.push(entry);
A
asfasdff 已提交
5232
    }
G
ge-yafang 已提交
5233 5234 5235 5236
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
W
wangkai 已提交
5237
        kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
G
ge-yafang 已提交
5238
            console.log('getResultSet succeed.');
G
ge-yafang 已提交
5239 5240 5241 5242 5243 5244
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5245 5246


A
asfasdff 已提交
5247
### getResultSize<sup>8+</sup> ###
A
asfasdff 已提交
5248

5249
getResultSize(deviceId: string, query: Query): Promise&lt;number&gt;
A
asfasdff 已提交
5250

G
ge-yafang 已提交
5251
获取与指定设备ID和Query对象匹配的结果数,使用Promise异步回调。
A
asfasdff 已提交
5252

G
ge-yafang 已提交
5253
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5254

G
ge-yafang 已提交
5255
**参数:**
A
asfasdff 已提交
5256

5257 5258 5259
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |KvStoreResultSet对象所属的设备ID。    |
Z
zengyawen 已提交
5260
| query     |[Query](#query8)       | 是    |表示查询对象。    |
A
asfasdff 已提交
5261

G
ge-yafang 已提交
5262
**返回值:**
A
asfasdff 已提交
5263

5264 5265
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5266
|Promise&lt;number&gt; |Promise对象。返回与指定设备ID和Query对象匹配的结果数。|
A
asfasdff 已提交
5267

G
ge-yafang 已提交
5268
**示例:**
A
asfasdff 已提交
5269

G
ge-yafang 已提交
5270
```js
G
ge-yafang 已提交
5271 5272 5273 5274 5275 5276 5277 5278 5279 5280
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 已提交
5281 5282
            }
        }
G
ge-yafang 已提交
5283
        entries.push(entry);
A
asfasdff 已提交
5284
    }
G
ge-yafang 已提交
5285 5286 5287 5288 5289 5290 5291 5292
    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) => {
G
ge-yafang 已提交
5293
        console.log('getResultSet succeed.');
G
ge-yafang 已提交
5294
    }).catch((err) => {
G
ge-yafang 已提交
5295
        console.log('getResultSet failed: ' + JSON.stringify(err));
G
ge-yafang 已提交
5296 5297 5298 5299 5300
    });
}catch(e) {
    console.log('GetResultSize e ' + e);
}
```
A
asfasdff 已提交
5301 5302


A
asfasdff 已提交
5303
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
5304

5305
removeDeviceData(deviceId: string, callback: AsyncCallback&lt;void&gt;): void
A
asfasdff 已提交
5306

G
ge-yafang 已提交
5307
从当前数据库中删除指定设备的数据,使用callback异步回调。
A
asfasdff 已提交
5308

G
ge-yafang 已提交
5309
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5310

G
ge-yafang 已提交
5311
**参数:**
A
asfasdff 已提交
5312

5313 5314 5315 5316
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string                       | 是    |标识要删除其数据的设备。  |
| callback  |AsyncCallback&lt;void&gt;    | 是    |回调函数。    |
A
asfasdff 已提交
5317

G
ge-yafang 已提交
5318
**示例:**
A
asfasdff 已提交
5319

G
ge-yafang 已提交
5320
```js
G
ge-yafang 已提交
5321 5322 5323 5324 5325 5326 5327
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';
W
wangkai 已提交
5328
        kvStore.removeDeviceData(deviceid, async function (err,data) {
G
ge-yafang 已提交
5329 5330 5331 5332
            if (err == undefined) {
                console.log('removeDeviceData success');
            } else {
                console.log('removeDeviceData fail');
W
wangkai 已提交
5333
                kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) {
G
ge-yafang 已提交
5334 5335 5336
                    console.log('RemoveDeviceData get success');
                });
            }
A
asfasdff 已提交
5337
        });
G
ge-yafang 已提交
5338 5339 5340 5341 5342
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}
```
A
asfasdff 已提交
5343 5344


A
asfasdff 已提交
5345
### removeDeviceData<sup>8+</sup> ###
A
asfasdff 已提交
5346

5347
removeDeviceData(deviceId: string): Promise&lt;void&gt;
A
asfasdff 已提交
5348

G
ge-yafang 已提交
5349
从当前数据库中删除指定设备的数据,使用Promise异步回调。
A
asfasdff 已提交
5350

G
ge-yafang 已提交
5351
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
5352

G
ge-yafang 已提交
5353
**参数:**
A
asfasdff 已提交
5354

5355 5356 5357
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceId  |string  | 是    |标识要删除其数据的设备。  |
A
asfasdff 已提交
5358

G
ge-yafang 已提交
5359
**返回值:**
A
asfasdff 已提交
5360

5361 5362
| 类型    | 说明       |
| ------  | -------   |
G
ge-yafang 已提交
5363
|Promise&lt;void&gt; |无返回结果的Promise对象。|
A
asfasdff 已提交
5364

G
ge-yafang 已提交
5365
**示例:**
A
asfasdff 已提交
5366

G
ge-yafang 已提交
5367
```js
G
ge-yafang 已提交
5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391
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 已提交
5392 5393


A
asfasdff 已提交
5394
### sync<sup>8+</sup> ###
A
asfasdff 已提交
5395

5396
sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void
A
asfasdff 已提交
5397

G
ge-yafang 已提交
5398
在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)
G
ge-yafang 已提交
5399

Z
zuojiangjiang 已提交
5400
**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。
A
asfasdff 已提交
5401

G
ge-yafang 已提交
5402
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
5403

G
ge-yafang 已提交
5404
**参数:**
A
asfasdff 已提交
5405

5406 5407 5408
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIdList    |string[]               | 是    |需要同步DeviceKvStore数据库的设备ID列表。 |
G
ge-yafang 已提交
5409
| mode            |[SyncMode](#syncmode)  | 是    |同步模式。  |
5410 5411
| allowedDelayMs  |number                 | 否    |可选参数,允许延时时间,单位:ms(毫秒)。  |

G
ge-yafang 已提交
5412
**示例:**
A
asfasdff 已提交
5413

G
ge-yafang 已提交
5414
```js
G
ge-yafang 已提交
5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431
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 已提交
5432

W
wangkai 已提交
5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447
### sync<sup>9+</sup> ###

sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void

在手动同步方式下, 触发数据库同步,此方法为同步方法。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)

**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
| deviceIds    |string[]               | 是    |需要同步DeviceKvStore数据库的设备ID列表。 |
W
wangkai 已提交
5448
| query            |[Query](#query8)  | 是    | 数据库的查询谓词条件。|
W
wangkai 已提交
5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474
| delayMs  |number                 | 否    |可选参数,允许延时时间,单位:ms(毫秒)。  |

**示例:**

```js
let kvstore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.sync(devices, query, 1000);
    });
}catch(e) {
    console.log('Sync e' + e);
}
```

G
ge-yafang 已提交
5475
### on('syncComplete')<sup>8+</sup> ###
A
asfasdff 已提交
5476

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

G
ge-yafang 已提交
5479
订阅同步完成事件回调通知。
A
asfasdff 已提交
5480

G
ge-yafang 已提交
5481
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
5482

G
ge-yafang 已提交
5483
**参数:**
A
asfasdff 已提交
5484

5485 5486
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5487
| event    |string      | 是    |订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
G
ge-yafang 已提交
5488
| syncCallback            |Callback<Array&lt;[string, number]&gt;> | 是    |回调函数。用于向调用方发送同步结果的回调。  |
A
asfasdff 已提交
5489

G
ge-yafang 已提交
5490
**示例:**
Z
zengyawen 已提交
5491

G
ge-yafang 已提交
5492
```js
W
wangkai 已提交
5493
let kvStore;
G
ge-yafang 已提交
5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508
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 已提交
5509 5510


G
ge-yafang 已提交
5511
### off('syncComplete')<sup>8+</sup> ###
A
asfasdff 已提交
5512

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

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

G
ge-yafang 已提交
5517
**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core
5518

G
ge-yafang 已提交
5519
**参数:**
A
asfasdff 已提交
5520

5521 5522
| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------   | ----  | ----------------------- |
G
ge-yafang 已提交
5523
| event         |string                           | 是    |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 |
G
ge-yafang 已提交
5524
| syncCallback  |Callback<Array&lt;[string, number]&gt;&gt; | 否    |回调函数。用于向调用方发送同步结果的回调。  |
5525

G
ge-yafang 已提交
5526
**示例:**
A
asfasdff 已提交
5527

G
ge-yafang 已提交
5528
```js
G
ge-yafang 已提交
5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539
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 已提交
5540

W
wangkai 已提交
5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593
### on('dataChange')<sup>9+</sup> ###

on(event: 'dataChange', type: SubscribeType, listener: Callback&lt;ChangeNotification&gt;): void

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

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |string  | 是    |订阅的事件名,固定为'dataChange',表示数据变更事件。       |
| type  |[SubscribeType](#subscribetype) | 是    |表示订阅的类型。     |
| listener |Callback&lt;[ChangeNotification](#changenotification)&gt; | 是    |回调函数。 |

**示例:**

```js
let kvStore;
kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
    console.log("dataChange callback call data: " + JSON.stringify(data));
});
```


### off('dataChange')<sup>9+</sup> ###

off(event:'dataChange', listener?: Callback&lt;ChangeNotification&gt;): void

取消订阅数据变更通知,此方法为同步方法。

**系统能力:**  SystemCapability.DistributedDataManager.KVStore.Core

**参数:**

| 参数名  | 参数类型 | 必填  | 说明                    |
| -----  | ------  | ----  | ----------------------- |
| event  |string  | 是    |取消订阅的事件名,固定为'dataChange',表示数据变更事件。       |
| listener |Callback&lt;[ChangeNotification](#changenotification)&gt; |否    |回调函数。 |

**示例:**

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

5594
## SyncMode
Z
zengyawen 已提交
5595

G
ge-yafang 已提交
5596
同步模式枚举。
Z
zengyawen 已提交
5597

G
ge-yafang 已提交
5598
**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core
5599

G
ge-yafang 已提交
5600
| 名称       | 值     | 说明                    |
5601 5602
| -----      | ------    | ----------------------- |
| PULL_ONLY  |0          |表示只能从远端拉取数据到本端。 |
G
ge-yafang 已提交
5603
| PUSH_ONLY  |1          |表示只能从本端推送数据到远端。 |
5604
| PUSH_PULL  |2          |表示从本端推送数据到远端,然后从远端拉取数据到本端。 |