# 分布式数据管理 >![](../../public_sys-resources/icon-note.gif) **说明:** >本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ``` import distributedData from '@ohos.data.distributedData'; ``` ## 权限 无 ## distributedData.createKVManager createKVManager\(config: KVManagerConfig, callback: AsyncCallback\): void 创建一个KVManager对象实例,用于管理数据库对象,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

config

KVManagerConfig

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

callback

AsyncCallback<KVManager>

KVManager实例创建时调用的回调,返回KVManager对象实例。

- 示例: ``` let kvManager; try { const kvManagerConfig = { bundleName : 'com.example.datamanagertest', userInfo : { userId : '0', userType : 0 } } distributedData.createKVManager(kvManagerConfig, function (err, manager) { if (err) { console.log("createKVManager err: " + JSON.stringify(err)); return; } console.log("createKVManager success"); kvManager = manager; }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ## distributedData.createKVManager createKVManager\(config: KVManagerConfig\): Promise 创建一个KVManager对象实例,用于管理数据库对象,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

config

KVManagerConfig

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

- 返回值:

类型

说明

Promise<KVManager>

指定的Promise回调方法,返回创建的KVManager对象实例。

- 示例: ``` let kvManager; try { const kvManagerConfig = { bundleName : 'com.example.datamanagertest', userInfo : { userId : '0', userType : 0 } } distributedData.createKVManager(kvManagerConfig).then((manager) => { console.log("createKVManager success"); kvManager = manager; }).catch((err) => { console.log("createKVManager err: " + JSON.stringify(err)); }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ## KVManagerConfig 提供KVManager实例的配置信息,包括调用方的包名和用户信息。

名称

类型

必填

描述

userInfo

UserInfo

调用方的用户信息。

bundleName

string

调用方的包名。

## UserInfo 用户信息。

名称

类型

必填

描述

userId

string

指示要设置的用户ID。

userType

UserType

指示要设置的用户类型。

## UserType 用户类型。

名称

默认值

说明

SAME_USER_ID

0

使用同一帐户登录不同设备的用户。

## KVManager 数据管理实例,用于获取KVStore的相关信息。在调用KVManager的方法前,需要先通过createKVManager构建一个KVManager实例。 ### getKVStore getKVStore\(storeId: string, options: Options, callback: AsyncCallback\): void 通过指定Options和storeId,创建并获取KVStore数据库,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

storeId

string

数据库唯一标识符,长度不大于MAX_STORE_ID_LENGTH

options

Options

创建KVStore实例的配置信息。

callback

AsyncCallback<T>,

<T extends KVStore>

创建KVStore实例的回调,返回KVStore对象实例。

- 示例: ``` let kvStore; try { const options = { createIfMissing : true, encrypt : false, backup : false, autoSync : true, kvStoreType : 1, securityLevel : 3, }; kvManager.getKVStore('storeId', options, function (err, store) { if (err) { console.log("getKVStore err: " + JSON.stringify(err)); return; } console.log("getKVStore success"); kvStore = store; }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### getKVStore getKVStore\(storeId: string, options: Options\): Promise 通过指定Options和storeId,创建并获取KVStore数据库,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

storeId

string

数据库唯一标识符,长度不大于MAX_STORE_ID_LENGTH

options

Options

创建KVStore实例的配置信息。

- 返回值:

类型

说明

Promise<T>

<T extends KVStore>

指定的Promise回调方法,返回创建的KVStore数据库实例。

- 示例: ``` let kvStore; try { const options = { createIfMissing : true, encrypt : false, backup : false, autoSync : true, kvStoreType : 1, securityLevel : 3, }; kvManager.getKVStore('storeId', options).then((store) => { console.log("getKVStore success"); kvStore = store; }).catch((err) => { console.log("getKVStore err: " + JSON.stringify(err)); }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### closeKVStore8+ ### closeKVStore\(appId: string, storeId: string, kvStore: KVStore, callback: AsyncCallback\): void; 通过storId的值关闭指定的kvStore数据库,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

appId

string

所调用数据库方的包名。

storeId

string

要关闭的数据库唯一标识符,长度不大于MAX_STORE_ID_LENGTH

kvStore

KVStore

要关闭的KvStore数据库。

callback

AsyncCallback<void>

回调函数,如果数据库关闭成功则返回true,否则返回false。

- 示例: ``` try { kvManager.getKVStore('storeId', options, async function (err, store) { console.log('getKVStore success'); kvStore = store; kvManager.closeKVStore('appId', 'storeId', kvStore, function (err, data) { console.log('closeKVStore success'); }); }); } catch (e) { console.log('CloseKVStore e ' + e); } ``` ### closeKVStore8+ ### closeKVStore\(appId: string, storeId: string, kvStore: KVStore\): Promise; 通过kvStore的值关闭指定的kvStore数据库,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

appId

string

所调用数据库方的包名。

storeId

string

要关闭的数据库唯一标识符,长度不大于MAX_STORE_ID_LENGTH

kvStore

KVStore

要关闭的数据库。

- 返回值:

类型

说明

Promise<void>

Promise实例,如果数据库关闭成功则返回true,否则返回false。

- 示例: ``` let KvStore; try { kvManager.closeKVStore('appId', 'storId', kvStore).then(() => { console.log('CloseKVStore success'); }).catch((err) => { console.log('CloseKVStore err ' + JSON.stringify(err)); }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### deleteKVStore8+ ### deleteKVStore(appId: string, storeId: string, callback: AsyncCallback): void; 通过storeId的值删除指定的kvStore数据库,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

appId

string

所调用数据库方的包名。

storeId

string

要删除的数据库唯一标识符,长度不大于MAX_STORE_ID_LENGTH

callback

AsyncCallback<void>

回调函数,如果成功返回true,否则返回false。

- 示例: ``` let KvStore; try { kvManager.deleteKVStore('appId', 'storeId', function (err, data) { if (err){ console.log('deleteKVStore success'); return; } console.log("deleteKVStore success"); }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### deleteKVStore8+ ### deleteKVStore\(appId: string, storeId: string\): Promise; 通过storeId的值删除指定的kvStore数据库,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

appId

string

所调用数据库方的包名。

storeId

string

要删除数据库的唯一标识符,长度不大于MAX_STORE_ID_LENGTH

- 返回值:

类型

说明

Promise<void>

Promise实例,如果成功返回true,否则返回false。

- 示例: ``` let KvStore; try { kvManager.deleteKVStore('appId', 'storId', kvStore).then(() => { console.log('deleteKVStore success'); }).catch((err) => { console.log('deleteKVStore err ' + JSON.stringify(err)); }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### getAllKVStoreId8+ ### getAllKVStoreId(appId: string, callback: AsyncCallback): void; 获取所有通过getKvStore方法创建的且没有调用deleteKvStore方法删除的KvStore数据库的storeId,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

appId

string

所调用数据库方的包名。

callback

AsyncCallback<void>

回调函数,返回所有创建的 KvStore 数据库的 storeId。

- 示例: ``` try { kvManager.getAllKVStoreId('appId', function (err, data) { console.log('GetAllKVStoreId getAllKVStoreId success'); console.log('GetAllKVStoreId size = ' + data.length); }); } catch (e) { console.log('GetAllKVStoreId e ' + e); } ``` ### getAllKVStoreId8+ ### getAllKVStoreId\(appId: string\): Promise; 获取所有通过getKvStore方法创建的且没有调用deleteKvStore方法删除的KvStore数据库的storeId,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

appId

string

所调用数据库方的包名。

- 返回值:

类型

说明

Promise<string[]>

Promise实例,返回所有创建的 KvStore 数据库的 storeId。。

- 示例: ``` let KvStore; try { kvManager.getKVStore('storId', options).then(async (store) => { console.log('getKVStore success'); kvStore = store; kvManager.getAllKVStoreId('appId').then((data) => { console.log('getAllKVStoreId success'); console.log('GetAllKVStoreId size = ' + data.length); console.log('GetAllKVStoreId data[0] = ' + data[0]); }); }).catch((err) => { console.log('getKVStore err ' + JSON.stringify(err)); }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### on8+ ### on\(event: 'distributedDataServiceDie', deathCallback: Callback\): void; 订阅设备状态变更通知,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

event

'distributedDataServiceDie'

设备状态改变时触发的事件名。

deathCallback

Callback<void>

回调函数,在设备状态改变时获取通知。

- 示例 ``` let KvStore; try { it('KVManagerOn', 0, function (done) { console.log('KVManagerOn'); const deathCallback = function () { console.log('death callback call'); } kvManager.on('distributedDataServiceDie', deathCallback); kvManager.off('distributedDataServiceDie', deathCallback); }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### off8+ ### off\(event: 'distributedDataServiceDie', deathCallback: Callback\): void; 取消订阅设备状态变更通知,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

event

'distributedDataServiceDie'

设备状态改变时触发的事件名。

deathCallback

Callback<void>

回调函数,取消设备状态改变时获取通知。

- 示例 ``` let KvStore; try { it('KVManagerOff', 0, function (done) { console.log('KVManagerOff'); const deathCallback = function () { console.log('death callback call'); } kvManager.off('distributedDataServiceDie', deathCallback); }); } catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ## Options 用于提供创建数据库的配置信息。

参数名

类型

必填

说明

createIfMissing

boolean

当数据库文件不存在时是否创建数据库,默认创建。

encrypt

boolean

设置数据库文件是否加密,默认不加密。

backup

boolean

设置数据库文件是否备份,默认备份。

autoSync

boolean

设置数据库文件是否自动同步,默认不自动同步。

kvStoreType

KVStoreType

设置要创建的数据库类型,默认为多设备协同数据库。

securityLevel

SecurityLevel

设置数据库安全级别,默认不设置安全级别。

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

名称

默认值

说明

DEVICE_COLLABORATION

0

表示多设备协同数据库。

SINGLE_VERSION

1

表示单版本数据库。

MULTI_VERSION

2

表示多版本数据库。此类型当前不允许使用。

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

名称

默认值

说明

NO_LEVEL

0

表示数据库不设置安全级别。

S0

1

表示数据库的安全级别为公共级别安全。

S1

2

表示数据库的安全级别为低级别安全,当数据泄露时会产生较低影响。

S2

3

表示数据库的安全级别为中级别安全,当数据泄露时会产生较大影响。

S3

5

表示数据库的安全级别为高级别安全,当数据泄露时会产生重大影响。

S4

6

表示数据库的安全级别为关键级别安全,当数据泄露时会产生严重影响。

## Constants KVStore常量。

名称

默认值

说明

MAX_KEY_LENGTH

1024

数据库中Key允许最大长度,单位字节。

MAX_VALUE_LENGTH

4194303

数据库中Value允许的最大长度,单位字节。

MAX_KEY_LENGTH_DEVICE

896

最大设备坐标密钥长度。

MAX_STORE_ID_LENGTH

128

数据库标识符允许的最大长度,单位字节。

MAX_QUERY_LENGTH

512000

最大查询长度。

MAX_BATCH_SIZE

128

最大批处理操作大小。

## Schema8+ ## 表示数据库架构,可以创建 Schema 对象,并在创建或打开数据库时将其放置在 Option 中。 ### constructor ###8+ constructor(); 用于创建架构实例的构造函数。 - 示例 ``` try { let schema = new ddm.Schema(); schema.root = new ddm.FieldNode(); const str = schema.constructor(); console.log("constructor: " + str); } catch (e) {} ``` ### toJsonString8+ ### toJsonString():string; 获取 json 格式的 schema 。 - 返回值:

类型

说明

string

以 json 格式返回Schema。

- 示例 ``` try { let schema = new ddm.Schema(); const str = schema.toJsonString(); schema.root = new ddm.FieldNode(); const node = schema.root; console.log("schema: " + str); } catch (e) {} ``` ## FieldNode8+ ## 表示 Schema 实例的节点,提供定义存储在数据库中的值的方法。 ### constructor8+ ### constructor\(name: string\); 用于创建具有指定字段的 FieldNode 实例的构造函数。 - 参数:

参数名

类型

必填

说明

child

string

指定字段。

- 示例 ``` try { let node = new ddm.FieldNode("name"); const str = node.constructor(); console.log("constructor: " + str); } catch (e) {} ``` ### appendChild8+ ### appendChild\(child: FieldNode\): boolean; 向这个 FieldNode 添加一个子节点。 - 参数:

参数名

类型

必填

说明

child

FieldNode

要附加的域节点。

- 返回值:

类型

说明

boolean

如果子节点成功添加到这个FieldNode,则返回 true;否则返回 false。

- 示例 ``` try { let node = new ddm.FieldNode("root"); let child1 = new ddm.FieldNode("child1"); let child2 = new ddm.FieldNode("child2"); let child3 = new ddm.FieldNode("child3"); node.appendChild(child1); node.appendChild(child2); node.appendChild(child3); console.log("appendNode " + node.toJson()); child1 = null; child2 = null; child3 = null; node = null; } catch (e) { console.log("AppendChild " + e); } ``` ### toJson8+ ### toJson(\): string; 获取字段名称。 - 返回值:

类型

说明

string

返回节点的字段名称。

- 示例 ``` try { let node = new ddm.FieldNode("root"); let child = new ddm.FieldNode("child"); node.appendChild(child); } catch (e) { console.log("ToJson " + e); } ``` ## KvStoreResultSet8+ ## 提供获取KvStore数据库结果集的方法,提供查询和移动数据读取位置的方法,在调用KvStoreResultSet的方法前,需要先通过DeviceKvStore 构建一个DeviceKvStore 实例。 ### getCount8+ ### getCount(\): number; 获取结果集中的行数。 - 返回值:

类型

说明

number

返回行数。

- 示例 ``` let KvStoreResultSet; try { const count = resultSet.getCount(); console.log("GetCount " + count); } catch (e) { console.log("GetCount fail " + e); } ``` ### getPosition8+ ### getPosition(\): number; 获取结果集中当前的读取位置。 - 返回值:

类型

说明

number

返回当前读取位置。

- 示例 ``` let KvStoreResultSet; try { const positon = resultSet.getPosition(); console.log("getPosition " + positon); } catch (e) { console.log("GetPosition001 fail " + e); } ``` ### moveToFirst8+ ### moveToFirst(\): boolean; 将读取位置移动到第一行。 - 返回值:

类型

说明

boolean

如果操作成功则返回true,否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.moveToFirst(); console.log("moveToFirst " + moved); } catch (e) { console.log("MoveToFirst fail " + e); } ``` ### moveToLast8+ ### moveToLast(\): boolean; 将读取位置移动到最后一行。 - 返回值:

类型

说明

boolean

如果操作成功则返回true,否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.moveToLast(); console.log("moveToLast " + moved); } catch (e) { console.log("moveToLast fail " + e); } ``` ### moveToNext8+ ### moveToNext(\): boolean; 将读取位置移动到下一行。 - 返回值:

类型

说明

boolean

如果操作成功则返回true,否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.moveToNext(); console.log("moveToNext " + moved); } catch (e) { console.log("moveToNext fail " + e); } ``` ### moveToPrevious8+ ### moveToPrevious(\): boolean; 将读取位置移动到上一行。 - 返回值:

类型

说明

boolean

如果操作成功则返回true,否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.moveToPrevious(); console.log("moveToPrevious " + moved); } catch (e) { console.log("moveToPrevious fail " + e); } ``` ### move8+ ### move\(offset: number\): boolean; 将读取位置移动到当前位置的相对偏移量。 - 参数:

参数名

类型

必填

说明

offset

number

表示与当前位置的相对偏移量,负偏移表示向后移动,正偏移表示向前移动。

- 返回值:

类型

说明

boolean

如果操作成功则返回true,否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.move(); console.log("move " + moved); } catch (e) { console.log("move fail " + e); } ``` ### moveToPosition8+ ### moveToPosition\(position: number\): boolean; 将读取位置从 0 移动到绝对位置。 - 参数:

参数名

类型

必填

说明

position

number

表示绝对位置。

- 返回值:

类型

说明

boolean

如果操作成功则返回true,否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.moveToPosition(); console.log("moveToPosition " + moved); } catch (e) { console.log("moveToPosition fail " + e); } ``` ### isFirst8+ ### isFirst(\): boolean; 检查读取位置是否为第一行。 - 返回值:

类型

说明

boolean

如果读取位置是第一行,则返回 true;否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.isFirst(); console.log("isFirst " + moved); } catch (e) { console.log("isFirst fail " + e); } ``` ### isLast8+ ### isLast(\): boolean; 检查读取位置是否为最后一行。 - 返回值:

类型

说明

boolean

如果读取位置是最后一行,则返回 true;否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.isLast(); console.log("isLast " + moved); } catch (e) { console.log("isLast fail " + e); } ``` ### isBeforeFirst8+ ### isBeforeFirst(\): boolean; 检查读取位置是否在第一行之前。 - 返回值:

类型

说明

boolean

如果读取位置在第一行之前,则返回 true;否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.isBeforeFirst(); console.log("isBeforeFirst " + moved); } catch (e) { console.log("isBeforeFirst fail " + e); } ``` ### isAfterLast8+ ### isAfterLast(\): boolean; 检查读取位置是否在最后一行之后。 - 返回值:

类型

说明

boolean

如果读取位置在最后一行之后,则返回 true;否则返回 false。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.isAfterLast(); console.log("isAfterLast " + moved); } catch (e) { console.log("isAfterLast fail " + e); } ``` ### getEntry8+ ### getEntry(\): Entry; 获取键值对 - 返回值:

类型

说明

Entry

返回键值对。

- 示例 ``` let KvStoreResultSet; try { const moved = resultSet.moveToNext(); const entry = resultSet.getEntry(); console.log("getEntry " + entry); } catch (e) { console.log("getEntry fail " + e); } ``` ## Query 8+## 使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。 ### constructor8+ ### constructor(); 用于创建查询实例的构造函数。 - 示例 ``` try { let query= new ddm.Query() const str = query.constructor(); console.log("constructor: " + str); } catch (e) {} ``` ### reset8+ ### reset(\): Query; 公共查询重置。 - 返回值:

类型

说明

Query

返回重置的 Query 对象。

- 示例 ``` let Query; try { let query = new ddm.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); } ``` ### equalTo8+ ### equalTo\(field: string, value: number|string|boolean\): Query; 构造一个Query对象来查询具有指定字段的条目,其值等于指定的值。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

value

number | string | boolean

表示指定的值。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.equalTo("field", "value"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### notEqualTo8+ ### notEqualTo\(field: string, value: number|string|boolean\): Query; 构造一个Query对象以查询具有指定字段且值不等于指定值的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

value

number|string|boolean

表示指定的值。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.notEqualTo("field", "value"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### greaterThan8+ ### greaterThan\(field: string, value: number|string|boolean\): Query; 构造一个Query对象以查询具有大于指定值的指定字段的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

value

number|string|boolean

表示指定的值。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.greaterThan("field", "value"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### lessThan8+ ### lessThan\(field: string, value: number|string\): Query; 构造一个Query对象以查询具有小于指定值的指定字段的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

value

number|string

表示指定的值。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.lessThan("field", "value"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### greaterThanOrEqualTo8+ ### greaterThanOrEqualTo\(field: string, value: number|string\): Query; 构造一个Query对象以查询具有指定字段且值大于或等于指定值的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

value

number|string

表示指定的值。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.greaterThanOrEqualTo("field", "value"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### lessThanOrEqualTo8+ ### lessThanOrEqualTo\(field: string, value: number|string\): Query; 构造一个Query对象以查询具有指定字段且值小于或等于指定值的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

value

number|string

表示指定的值。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.lessThanOrEqualTo("field", "value"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### isNull8+ ### isNull\(field: string\): Query; 构造一个Query对象以查询具有值为null的指定字段的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.isNull("field"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### inNumber8+ ### inNumber\(field: string, valueList: number[\]\): Query; 构造一个Query对象以查询具有指定字段的条目,其值在指定的值列表中。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

valueList

number[]

表示指定的值列表。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.inNumber("field", "valueList"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### inString8+ ### inString\(field: string, valueList: string[\]\): Query; 构造一个Query对象以查询具有指定字段的条目,其值在指定的字符串值列表中。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

valueList

string[]

表示指定的字符串值列表。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.inString("field", "valueList"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### notInNumber8+ ### notInNumber\(field: string, valueList: number[\]\): Query; 构造一个Query对象以查询具有指定字段的条目,该字段的值不在指定的值列表中。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

valueList

number[]

表示指定的值列表。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.notInNumber("field", "valueList"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### notInString8+ ### notInString\(field: string, valueList: string[\]\): Query; 构造一个Query对象以查询具有指定字段且值不在指定字符串值列表中的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

valueList

string[]

表示指定的字符串值列表。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.notInString("field", "valueList"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### like8+ ### like\(field: string, value: string\): Query; 构造一个Query对象以查询具有与指定字符串值相似的指定字段的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

value

string

表示指定的字符串值。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.like("field", "value"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### unlike8+ ### unlike\(field: string, value: string\): Query; 构造一个Query对象以查询具有与指定字符串值不相似的指定字段的条目。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

value

string

表示指定的字符串值。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.unlike("field", "value"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### and8+ ### and(\): Query; 构造一个带有与条件的查询对象。 - 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.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); } ``` ### or8+ ### or(\): Query; 构造一个带有或条件的Query对象。 - 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.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); } ``` ### orderByAsc8+ ### orderByAsc\(field: string\): Query; 构造一个Query对象,将查询结果按升序排序。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.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); } ``` ### orderByDesc8+ ### orderByDesc\(field: string\): Query; 构造一个Query对象,将查询结果按降序排序。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段,必须以$开头, 并且不能包含' ^ '。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.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); } ``` ### limit8+ ### limit\(total: number, offset: number\): Query; 构造一个Query对象来指定结果的数量和开始位置。 - 参数:

参数名

类型

必填

说明

total

number

表示指定的结果数。

offset

number

表示起始位置。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.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); } ``` ### isNotNull8+ ### isNotNull\(field: string\): Query; 使用不为空的指定字段创建查询条件。 - 参数:

参数名

类型

必填

说明

fieId

string

表示指定字段。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.Query(); query.isNotNull("field"); console.log("query is " + query.getSqlLike()); query = null; } catch (e) { console.log("dumplicated calls should be ok :" + e); } ``` ### beginGroup8+ ### beginGroup\(\): Query; 创建一个带有左括号的查询条件组。 - 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.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); } ``` ### endGroup8+ ### endGroup\(\): Query; 创建一个带有右括号的查询条件组。 - 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` let Query; try { let query = new ddm.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); } ``` ### prefixKey8+ ### prefixKey\(prefix: string\): Query; 创建具有指定键前缀的查询条件。 - 参数:

参数名

类型

必填

说明

prefix

string

表示指定的键前缀。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` try { let query = new ddm.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); } ``` ### setSuggestIndex8+ ### setSuggestIndex\(index: string\): Query; 设置一个指定的索引,将优先用于查询。 - 参数:

参数名

类型

必填

说明

index

string

指示要设置的索引。

- 返回值:

类型

说明

Query

返回查询对象。

- 示例 ``` try { let query = new ddm.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); } ``` ## KVStore KVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅同步完成的方法。在调用KVStore的方法前,需要先通过getKVStore构建一个KVStore实例。 ### put put\(key: string, value: Uint8Array | string | number | boolean, callback: AsyncCallback\): void 添加指定类型键值对到数据库,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

key

string

要添加数据的key,不能为空且长度不大于MAX_KEY_LENGTH

value

Uint8Array | string | number | boolean

要添加数据的value,支持Uint8Array、number 、 string 、boolean,

Uint8Array、string 的长度不大于MAX_VALUE_LENGTH

callback

AsyncCallback<void>

回调函数。

- 示例 ``` const KEY_TEST_STRING_ELEMENT = 'key_test_string'; const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; try { kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) { if (err != undefined) { console.log("put err: " + JSON.stringify(err)); return; } console.log("put success"); }); }catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### put put\(key: string, value: Uint8Array | string | number | boolean\): Promise 添加指定类型键值对到数据库,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

key

string

要添加数据的key,不能为空且长度不大于MAX_KEY_LENGTH

value

Uint8Array | string | number | boolean

要添加数据的value,支持Uint8Array、number 、 string 、boolean,

Uint8Array、string 的长度不大于MAX_VALUE_LENGTH

- 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

- 示例 ``` const KEY_TEST_STRING_ELEMENT = 'key_test_string'; const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; try { kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => { console.log("put success: " + JSON.stringify(data)); }).catch((err) => { console.log("put err: " + JSON.stringify(err)); }); }catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### delete delete\(key: string, callback: AsyncCallback\): void 从数据库中删除指定键值的数据,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

key

string

要删除数据的key,不能为空且长度不大于MAX_KEY_LENGTH

callback

AsyncCallback<void>

回调函数。

- 示例 ``` const KEY_TEST_STRING_ELEMENT = 'key_test_string'; const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; try { kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) { if (err != undefined) { console.log("put err: " + JSON.stringify(err)); return; } console.log("put success"); kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err,data) { if (err != undefined) { console.log("delete err: " + JSON.stringify(err)); return; } console.log("delete success"); }); }); }catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### delete delete\(key: string\): Promise 从数据库中删除指定键值的数据,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

key

string

要删除数据的key,不能为空且长度不大于MAX_KEY_LENGTH

- 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

- 示例 ``` const KEY_TEST_STRING_ELEMENT = 'key_test_string'; const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; try { kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => { console.log("put success: " + JSON.stringify(data)); kvStore.delete(KEY_TEST_STRING_ELEMENT).then((data) => { console.log("delete success"); }).catch((err) => { console.log("delete err: " + JSON.stringify(err)); }); }).catch((err) => { console.log("put err: " + JSON.stringify(err)); }); }catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### on on\(event: 'dataChange', type: SubscribeType, observer: Callback\): void 订阅指定类型的数据变更通知,此方法为同步方法。 - 参数:

参数名

类型

说明

event

'dataChange'

回调函数名称。

type

SubscribeType

表示订阅的类型。

observer

Callback<ChangeNotification>

回调函数。

- 示例 ``` kvStore.on('dataChange', 2, function (data) { console.log("dataChange callback call data: " + JSON.stringify(data)); }); ``` ### on on\(event: 'syncComplete', syncCallback: Callback\>\): void 订阅数据同步完成通知,此方法为同步方法。 - 参数:

参数名

类型

说明

event

'syncComplete'

回调函数名称。

syncCallback

Callback<Array<[string, number]>>

回调函数。

- 示例 ``` kvStore.on('syncComplete', function (data) { console.log("syncComplete callback call data: " + data); }); ``` ### off8+ ### off\(event:'dataChange', observer: Callback\): void; 取消订阅数据同步完成通知,此方法为同步方法。 - 参数:

参数名

类型

说明

event

'datachange'

回调函数名称。

observer

Callback<ChangeNotification>

回调函数。

### putBatch8+ ### putBatch\(entries: Entry[], callback: AsyncCallback\): void; 批量插入键值对到KvStore数据库中,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

entries

Entry[]

表示要批量插入的键值对。

callback

Asyncallback<void>

回调函数。

### putBatch8+ ### putBatch\(entries: Entry[\]\): Promise; 批量插入键值对到KvStore数据库中,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

entries

Entry[]

表示要批量插入的键值对。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

### deleteBatch8+ ### deleteBatch(keys: string[], callback: AsyncCallback): void; 批量删除KvStore数据库中的键值对,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

keys

string[]

表示要批量删除的键值对。

callback

Asyncallback<void>

回调函数。

### deleteBatch8+ ### deleteBatch\(keys: string[\]\): Promise; 批量删除键值对到KvStore数据库中,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

keys

string[]

表示要批量删除的键值对。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

### startTransaction8+ ### startTransaction\(callback: AsyncCallback\): void; 启动KvStore数据库中的事务,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

回调函数。

### startTransaction8+ ### startTransaction\(\): Promise; 启动KvStore数据库中的事务,并通过Promise方式返回,此方法为异步方法。 - 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

### commit8+ ### commit\(callback: AsyncCallback\): void; 提交KvStore数据库中的事务,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

回调函数。

### commit8+ ### commit(\): Promise; 提交KvStore数据库中的事务,并通过Promise方式返回,此方法为异步方法。 - 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

### rollback8+ ### rollback\(callback: AsyncCallback\): void; 在KvStore数据库中回滚事务,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

回调函数。

### rollback8+ ### rollback(\): Promise; 在KvStore数据库中回滚事务,并通过Promise方式返回,此方法为异步方法。 - 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

### enableSync8+ ### enableSync\(enabled: boolean, callback: AsyncCallback\): void; 设定是否开启同步,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

enabled

boolean

指定是否开启同步,ture表示开启同步,false表示不启用同步。

callback

AsyncCallback<void>

回调函数。

### enableSync8+ ### enableSync\(enabled: boolean\): Promise; 设定是否开启同步,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

enabled

boolean

指定是否开启同步,ture表示开启同步,false表示不启用同步。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

### setSyncRange8+ ### setSyncRange\(localLabels: string[], remoteSupportLabels: string[], callback: AsyncCallback\): void; 设置同步范围标签,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

localLabels

string[]

表示本地设备的同步标签。

remoteSupportLabels

string[]

表示要同步数据的设备的同步标签。

callback

AsyncCallback<void>

回调函数。

### setSyncRange8+ ### setSyncRange\(localLabels: string[], remoteSupportLabels: string[\]\): Promise; 设置同步范围标签,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

localLabels

string[]

表示本地设备的同步标签。

remoteSupportLabels

string[]

表示要同步数据的设备的同步标签。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于异步处理。

## SubscribeType 描述订阅类型。

名称

默认值

说明

SUBSCRIBE_TYPE_LOCAL

0

表示订阅本地数据变更。

SUBSCRIBE_TYPE_REMOTE

1

表示订阅远端数据变更。

SUBSCRIBE_TYPE_ALL

2

表示订阅远端和本地数据变更。

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

名称

参数类型

可读

可写

说明

insertEntries

Entry[]

数据添加记录。

updateEntries

Entry[]

数据更新记录。

deleteEntries

Entry[]

数据删除记录。

deviceId

string

设备ID,此处为设备UUID。

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

名称

参数类型

可读

可写

说明

key

string

键值。

value

Value

值对象。

## Value 存储在数据库中的对象。

名称

参数类型

可读

可写

说明

type

ValueType

值类型。

value

Uint8Array | string | number | boolean

值,Uint8Array、string 的长度不大于MAX_VALUE_LENGTH

## ValueType 用于表示数据类型。 只能被内部应用使用。

名称

默认值

说明

STRING

0

表示值类型为字符串。

INTEGER

1

表示值类型为整数。

FLOAT

2

表示值类型为浮点数。

BYTE_ARRAY

3

表示值类型为字节数组。

BOOLEAN

4

表示值类型为布尔值。

DOUBLE

5

表示值类型为双浮点数。

## SingleKVStore 单版本分布式数据库,继承自KVStore,提供查询数据和同步数据的方法。在调用SingleKVStore的方法前,需要先通过getKVStore构建一个KVStore实例。 ### get get\(key: string, callback: AsyncCallback\): void 获取指定键的值,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

key

string

要查询数据的key,不能为空且长度不大于MAX_KEY_LENGTH

callback

AsyncCallback<Uint8Array | string | boolean | number>

回调函数,获取查询的值。

- 示例 ``` const KEY_TEST_STRING_ELEMENT = 'key_test_string'; const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; try { kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) { if (err != undefined) { console.log("put err: " + JSON.stringify(err)); return; } console.log("put success"); kvStore.get(KEY_TEST_STRING_ELEMENT, function (err,data) { console.log("get success data: " + data); }); }); }catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### get get\(key: string\): Promise 获取指定键的值,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

key

string

要查询数据的key,不能为空且长度不大于MAX_KEY_LENGTH

- 返回值:

类型

说明

Promise<Uint8Array | string | boolean | number>

Promise实例,用于获取异步返回结果。

- 示例 ``` const KEY_TEST_STRING_ELEMENT = 'key_test_string'; const VALUE_TEST_STRING_ELEMENT = 'value-test-string'; try { kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => { console.log("put success: " + JSON.stringify(data)); kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => { console.log("get success data: " + data); }).catch((err) => { console.log("get err: " + JSON.stringify(err)); }); }).catch((err) => { console.log("put err: " + JSON.stringify(err)); }); }catch (e) { console.log("An unexpected error occurred. Error:" + e); } ``` ### getEntries8+ ### getEntries\(keyPrefix: string, callback: AsyncCallback\): void; 获取匹配指定键前缀的所有键值对,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

keyPrefix

string

表示要匹配的键前缀。

callback

AsyncCallback<Entry[]>

回调函数,获取指定前缀的键值对列表。

- 示例 ``` try { let entries = []; for (var i = 0; i < 10; i++) { var key = 'batch_test_number_key'; var entry = { key : key + i, value : { type : factory.ValueType.INTEGER, value : 222 } } entries.push(entry); } kvStore.putBatch(entries, async function (err,data) { console.log('putBatch success'); kvStore.getEntries('batch_test_number_key', function (err,entrys) { console.log('getEntries success'); console.log('entrys.length: ' + entrys.length); console.log('entrys[0]: ' + JSON.stringify(entrys[0])); }); }); }catch(e) { console.log('PutBatch e ' + e); } ``` ### getEntries8+ ### getEntries\(keyPrefix: string\): Promise; 获取匹配指定键前缀的所有键值对,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

keyPrefix

string

表示要匹配的键前缀。

- 返回值:

类型

说明

Promise<Entry[]>

Promise实例,用于获取异步返回结果。

- 示例 ``` try { let entries = []; for (var i = 0; i < 10; i++) { var key = 'batch_test_string_key'; var entry = { key : key + i, value : { type : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } console.log('entries: ' + entries); kvStore.putBatch(entries).then(async (err) => { console.log('putBatch success'); kvStore.getEntries('batch_test_string_key').then((entrys) => { console.log('getEntries success'); console.log('entrys.length: ' + entrys.length); console.log('entrys[0]: ' + JSON.stringify(entrys[0])); console.log('entrys[0].value: ' + JSON.stringify(entrys[0].value)); console.log('entrys[0].value.value: ' + entrys[0].value.value); }).catch((err) => { console.log('getEntries fail ' + JSON.stringify(err)); }); }).catch((err) => { console.log('putBatch fail ' + JSON.stringify(err)); }); }catch(e) { console.log('PutBatch001 e ' + e); } ``` ### getEntries8+ ### getEntries\(query: Query, callback: AsyncCallback\): void; 获取与指定 Query 对象匹配的键值对列表,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

callback

AsyncCallback<Entry[]>

回调函数,获取指定前缀的键值对列表。

- 示例 ``` 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 : factory.ValueType.BYTE_ARRAY, value : arr } } entries.push(entry); } console.log('entries: ' + entries); kvStore.putBatch(entries, async function (err,data) { console.log('putBatch success'); kvStore.getEntries('batch_test_bool_key', function (err,entrys) { console.log('getEntries success'); console.log('entrys.length: ' + entrys.length); }); }); }catch(e) { console.log('PutBatch e ' + e); } ``` ### getEntries8+ ### getEntries\(query: Query\): Promise; 获取匹配指定键前缀的所有键值对,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<Entry[]>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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 : factory.ValueType.BYTE_ARRAY, value : arr } } entries.push(entry); } console.log('GetEntries entries: ' + entries); kvStore.putBatch(entries).then(async (err) => { console.log('GetEntries putBatch success'); const query = new factory.Query(); query.prefixKey("batch_test"); kvStore.getEntries(query).then((entrys) => { console.log('GetEntries getEntries success'); }).catch((err) => { console.log('GetEntries getEntries fail ' + JSON.stringify(err)); }); }).catch((err) => { console.log('GetEntries putBatch fail ' + JSON.stringify(err)); }); console.log('GetEntries success'); }catch(e) { console.log('GetEntries e ' + e); } ``` ### getResultSet8+ ### getResultSet\(keyPrefix: string, callback: AsyncCallback\): void; 从 KvStore 数据库中获取具有指定前缀的结果集,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

keyPrefix

string

表示要匹配的键前缀。

callback

AsyncCallback<KvStoreResultSet>

回调函数,获取具有指定前缀的结果集。

- 示例 ``` 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 : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } kvStore.putBatch(entries, async function (err, data) { console.log('GetResultSet putBatch success'); kvStore.getResultSet('batch_test_string_key', async function (err, result) { console.log('GetResultSet getResultSet success'); resultSet = result; kvStore.closeResultSet(resultSet, function (err, data) { console.log('GetResultSet closeResultSet success'); }) }); }); }catch(e) { console.log('GetResultSet e ' + e); } ``` ### getResultSet8+ ### getResultSet\(keyPrefix: string\): Promise; 从 KvStore 数据库中获取具有指定前缀的结果集,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

keyPrefix

string

表示要匹配的键前缀。

- 返回值:

类型

说明

Promise<KvStoreResultSet>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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 : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } kvStore.putBatch(entries).then(async (err) => { console.log('GetResult putBatch success'); }).catch((err) => { console.log('PutBatch putBatch fail ' + JSON.stringify(err)); }); kvStore.getResultSet('batch_test_string_key').then((result) => { console.log('GetResult getResultSet success'); resultSet = result; }).catch((err) => { console.log('GetResult getResultSet fail ' + JSON.stringify(err)); }); kvStore.closeResultSet(resultSet).then((err) => { console.log('GetResult closeResultSet success'); }).catch((err) => { console.log('GetResult closeResultSet fail ' + JSON.stringify(err)); }); }catch(e) { console.log('GetResult e ' + e); } ``` ### getResultSet8+ ### getResultSet\(query: Query, callback: AsyncCallback\): void; 获取与指定 Query 对象匹配的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

callback

AsyncCallback<KvStoreResultSet>

回调函数,获取与指定 Query 对象匹配的 KvStoreResultSet 对象。

- 示例 ``` 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 : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } kvStore.putBatch(entries, async function (err, data) { console.log('putBatch success'); kvStore.getResultSet('batch_test_string_key', async function (err, result) { console.log('getResultSet success'); resultSet = result; kvStore.closeResultSet(resultSet, function (err, data) { }) }); }); }catch(e) { console.log('GetResultSet e ' + e); } ``` ### getResultSet8+ ### getResultSet\(query: Query\): Promise; 获取与指定 Query 对象匹配的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<KvStoreResultSet>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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 : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } kvStore.putBatch(entries).then(async (err) => { console.log('putBatch success'); }).catch((err) => { console.log('putBatch fail ' + err); }); kvStore.getResultSet('batch_test_string_key').then((result) => { console.log('getResultSet success'); resultSet = result; }).catch((err) => { console.log('getResultSet fail ' + err); }); kvStore.closeResultSet(resultSet).then((err) => { console.log('closeResultSet success'); }).catch((err) => { console.log('closeResultSet fail ' + err); }); }catch(e) { console.log('ResultSet e ' + e); } ``` ### closeResultSet8+ ### closeResultSet\(resultSet: KvStoreResultSet, callback: AsyncCallback\): void; 关闭由 getResultSet 返回的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

resultSet

KvStoreResultSet

表示要关闭的 KvStoreResultSet 对象。

callback

AsyncCallback<void>

回调函数,获取由 getResultSet 返回的 KvStoreResultSet 对象。

- 示例 ``` 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); } ``` ### closeResultSet8+ ### closeResultSet\(resultSet: KvStoreResultSet\): Promise; 关闭由 getResultSet 返回的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

resultSet

KvStoreResultSet

表示要关闭的 KvStoreResultSet 对象。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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); } ``` ### getResultSize8+ ### getResultSize\(query: Query, callback: AsyncCallback\): void; 获取与指定 Query 对象匹配的结果数,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

callback

AsyncCallback<number>

回调函数,获取与指定 Query 对象匹配的结果数。

- 示例 ``` try { // pass query console.log('GetResultSize success'); }catch(e) { console.log('GetResultSize e ' + e); } ``` ### getResultSize8+ ### getResultSize\(query: Query\): Promise; 获取与指定 Query 对象匹配的结果数,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<number>

Promise实例,用于获取异步返回结果。

- 示例 ``` try { // pass query console.log('GetResultSize success'); }catch(e) { console.log('GetResultSize e ' + e); } ``` ### removeDeviceData8+ ### removeDeviceData\(deviceId: string, callback: AsyncCallback\): void; 删除指定设备的数据,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

表示要删除设备的名称。

callback

AsyncCallback<void>

回调函数。

- 示例 ``` const KEY_TEST_FLOAT_ELEMENT = 'key_test_float_2'; const KEY_TEST_STRING_ELEMENT = 'key_test_string_2'; 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'; kvStore.removeDeviceData(deviceid, async function (err,data) { if (err == undefined) { console.log('removeDeviceData success'); } else { console.log('removeDeviceData fail'); kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err,data) { console.log('RemoveDeviceData get success'); }); } }); }); }catch(e) { console.log('RemoveDeviceData e ' + e); } ``` ### removeDeviceData8+ ### removeDeviceData\(deviceId: string\): Promise; 删除指定设备的数据,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

表示要删除设备的名称。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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); } ``` ### on8+ ### on\(event: 'syncComplete', syncCallback: Callback>\): void; 注册同步 SingleKvStore 数据库回调,并通过异步方式返回。 - 参数:

参数名

类型

必填

说明

event

'syncComplete'

设备状态改变时触发的事件名。

syncCallback

Callback<Array<[string, number]>>>

用于向调用方发送同步结果的回调。

- 示例 ``` const KEY_TEST_FLOAT_ELEMENT = 'key_test_float'; const VALUE_TEST_FLOAT_ELEMENT = 321.12; try { kvStore.on('dataChange', 0, function (data) { console.log('OnChange 0' + data) }); kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => { console.log('OnChange put success'); }).catch((error) => { console.log('OnChange put fail ' + error); }); }catch(e) { console.log('OnChange put e ' + e); } ``` ### off8+ ### off\(event: 'syncComplete', syncCallback: Callback>\): void; 取消注册同步 SingleKvStore 数据库回调,并通过异步方式返回。 - 参数:

参数名

类型

必填

说明

event

'syncComplete'

设备状态改变时触发的事件名。

syncCallback

Callback<Array<[string, number]>>>

用于向调用方发送同步结果的回调。

- 示例 ``` try { const func = function (data) { console.log('OffChange 0' + data) }; kvStore.on('dataChange', 0, func); kvStore.off('dataChange', func); }catch(e) { console.log('OffChange e ' + e); } ``` ### sync sync\(deviceIdList: string\[\], mode: SyncMode, allowedDelayMs?: number\): void 在手动同步模式下,触发数据库同步,此方法为同步方法。 - 参数:

参数名

类型

必填

说明

deviceIdList

string[]

同一组网环境下,需要同步的设备的deviceId列表。

mode

SyncMode

同步类型。

allowedDelayMs

number

可选参数,允许延时时间,单位:ms(毫秒)。

- 示例: ``` kvStore.sync('deviceIds', 1, 1000); ``` ### setSyncParam8+ ### setSyncParam\(defaultAllowedDelayMs: number, callback: AsyncCallback\): void; 设置允许数据库同步的默认延迟,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

defaultAllowedDelayMs

number

表示数据库同步允许的默认延迟,以毫秒为单位。

callback

AsyncCallback<void>

回调函数。

- 示例 ``` try { const defaultAllowedDelayMs = 500; kvStore.setSyncParam(defaultAllowedDelayMs, function (err,data) { console.log('SetSyncParam put success'); }); }catch(e) { console.log('testSingleKvStoreSetSyncParam101 e ' + e); } ``` ### setSyncParam8+ ### setSyncParam\(defaultAllowedDelayMs: number\): Promise; 设置允许数据库同步的默认延迟,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

defaultAllowedDelayMs

number

表示数据库同步允许的默认延迟,以毫秒为单位。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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); } ``` ### getSecurityLevel8+ ### getSecurityLevel\(callback: AsyncCallback\): void; 获取数据库的安全级别,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

callback

AsyncCallback<SecurityLevel>

回调函数。

- 示例 ``` try { kvStore.getSecurityLevel(function (err,data) { console.log('getSecurityLevel success'); }); }catch(e) { console.log('GetSecurityLeve e ' + e); } ``` ### getSecurityLevel8+ ### getSecurityLevel(\): Promise; 获取数据库的安全级别,并通过Promise方式返回,此方法为异步方法。 - 返回值:

类型

说明

Promise<SecurityLevel>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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); } ``` ## DeviceKVStore8+ ## 在分布式系统中通过设备管理分布式数据,继承自KvStore,提供查询数据和同步数据的方法。在调用DeviceKVStore的方法前,需要先通过getKVStore构建一个KVStore实例。 ### get8+ ### get\(deviceId: string, key: string, callback: AsyncCallback\): void; 获取与指定设备 ID 和密钥匹配的 String 值,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

标识要查询其数据的设备。

key

string

表示要查询的String值的键。

callback

AsyncCallback<boolean|string|number|Uint8Array>

回调函数,返回匹配给定条件的字符串值。

- 示例 ``` 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); } ``` ### get8+ ### get\(deviceId: string, key: string\): Promise; 获取与指定设备 ID 和密钥匹配的 String 值,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

标识要查询其数据的设备。

key

string

表示要查询的String值的键。

- 返回值:

类型

说明

Promise<boolean|string|number|Uint8Array>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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)); }); }).catch((error) => { console.log('put error' + error); }); } catch (e) { console.log('Get e ' + e); } ``` ### getEntries8+ ### getEntries\(deviceId: string, keyPrefix: string, callback: AsyncCallback\): void; 获取与指定设备 ID 和密钥前缀匹配的所有键值对,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

标识要查询其数据的设备。

keyPrefix

string

表示要匹配的键前缀。

callback

AsyncCallback<Entry[]>

回调函数,返回满足给定条件的所有键值对的列表。

- 示例 ``` try { let entries = []; for (var i = 0; i < 10; i++) { var key = 'batch_test_string_key'; var entry = { key : key + i, value : { type : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } console.log('entries: ' + entries); kvStore.putBatch(entries, async function (err,data) { console.log('putBatch success'); kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err,entrys) { console.log('getEntries success'); console.log('entrys.length: ' + entrys.length); console.log('entrys[0]: ' + JSON.stringify(entrys[0])); }); }); }catch(e) { console.log('PutBatch e ' + e); } ``` ### getEntries8+ ### getEntries\(deviceId: string, keyPrefix: string\): Promise; 获取与指定设备 ID 和密钥前缀匹配的所有键值对,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

标识要查询其数据的设备。

keyPrefix

string

表示要匹配的键前缀。

- 返回值:

类型

说明

Promise<Entry[]>

Promise实例,用于获取异步返回结果。

- 示例 ``` try { let entries = []; for (var i = 0; i < 10; i++) { var key = 'batch_test_string_key'; var entry = { key : key + i, value : { type : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } console.log('entries: ' + entries); kvStore.putBatch(entries).then(async (err) => { console.log('putBatch success'); kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entrys) => { console.log('getEntries success'); console.log('entrys.length: ' + entrys.length); console.log('entrys[0]: ' + JSON.stringify(entrys[0])); console.log('entrys[0].value: ' + JSON.stringify(entrys[0].value)); console.log('entrys[0].value.value: ' + entrys[0].value.value); }).catch((err) => { console.log('getEntries fail ' + JSON.stringify(err)); }); }).catch((err) => { console.log('putBatch fail ' + JSON.stringify(err)); }); }catch(e) { console.log('PutBatch e ' + e); } ``` ### getEntries8+ ### getEntries\(query: Query, callback: AsyncCallback\): void; 获取与指定 Query 对象匹配的键值对列表,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

callback

AsyncCallback<Entry[]>

回调函数,返回与指定 Query 对象匹配的键值对列表。

- 示例 ``` 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 : factory.ValueType.BYTE_ARRAY, value : arr } } entries.push(entry); } console.log('entries: ' + entries); kvStore.putBatch(entries, async function (err,data) { console.log('putBatch success'); kvStore.getEntries('localDeviceId', 'batch_test_bool_key', function (err,entrys) { console.log('getEntries success'); console.log('entrys.length: ' + entrys.length); }); }); }catch(e) { console.log('PutBatch e ' + e); } ``` ### getEntries8+ ### getEntries\(query: Query\): Promise; 获取与指定 Query 对象匹配的键值对列表,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<Entry[]>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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 : factory.ValueType.BYTE_ARRAY, value : arr } } entries.push(entry); } console.log('entries: ' + entries); kvStore.putBatch(entries).then(async (err) => { console.log('putBatch success'); kvStore.getEntries('localDeviceId', 'batch_test_bool_key').then((entrys) => { console.log('getEntries success'); }).catch((err) => { console.log('getEntries fail ' + JSON.stringify(err)); }); }).catch((err) => { console.log('putBatch fail ' + JSON.stringify(err)); }); }catch(e) { console.log('PutBatch e ' + e); } ``` ### getEntries8+ ### getEntries\(deviceId: string, query: Query, callback: AsyncCallback\): void; 获取与指定设备 ID 和 Query 对象匹配的键值对列表,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

键值对所属的设备ID。

query

Query

表示查询对象。

callback

AsyncCallback<Entry[]>

回调函数,返回与指定 Query 对象匹配的键值对列表。

- 示例 ``` 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 : factory.ValueType.BYTE_ARRAY, value : arr } } entries.push(entry); } console.log('entries: ' + entries); kvStore.putBatch(entries, async function (err,data) { console.log('putBatch success'); kvStore.getEntries('localDeviceId', 'batch_test_bool_key', function (err,entrys) { console.log('getEntries success'); console.log('entrys.length: ' + entrys.length); }); }); }catch(e) { console.log('PutBatch e ' + e); } ``` ### getEntries8+ ### getEntries\(deviceId: string, query: Query\): Promise; 获取与指定设备 ID 和 Query 对象匹配的键值对列表,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

键值对所属的设备ID。

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<Entry[]>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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 : factory.ValueType.BYTE_ARRAY, value : arr } } entries.push(entry); } console.log('entries: ' + entries); kvStore.putBatch(entries).then(async (err) => { console.log('putBatch success'); kvStore.getEntries('localDeviceId', 'batch_test_bool_key').then((entrys) => { console.log('getEntries success'); }).catch((err) => { console.log('getEntries fail ' + JSON.stringify(err)); }); }).catch((err) => { console.log('putBatch fail ' + JSON.stringify(err)); }); }catch(e) { console.log('PutBatch e ' + e); } ``` ### getResultSet8+ ### getResultSet\(deviceId: string, keyPrefix: string, callback: AsyncCallback\): void; 获取与指定设备 ID 和密钥前缀匹配的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

标识要查询其数据的设备。

keyPrefix

string

表示要匹配的键前缀。

callback

AsyncCallback<KvStoreResultSet>

回调函数,返回 KvStoreResultSet 对象。

- 示例 ``` try { let resultSet; kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) { console.log('getResultSet success'); resultSet = result; kvStore.closeResultSet(resultSet, function (err, data) { console.log('closeResultSet success'); }) }); }catch(e) { console.log('GetResultSet e ' + e); } ``` ### getResultSet8+ ### getResultSet\(deviceId: string, keyPrefix: string\): Promise; 获取与指定设备 ID 和密钥前缀匹配的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

标识要查询其数据的设备。

keyPrefix

string

表示要匹配的键前缀。

- 返回值:

类型

说明

Promise<KvStoreResultSet>

Promise实例,用于获取异步返回结果。

- 示例 ``` try { let resultSet; kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => { console.log('getResultSet success'); resultSet = result; }).catch((err) => { console.log('getResultSet fail ' + JSON.stringify(err)); }); kvStore.closeResultSet(resultSet).then((err) => { console.log('closeResultSet success'); }).catch((err) => { console.log('closeResultSet fail ' + JSON.stringify(err)); }); }catch(e) { console.log('GetResultSet e ' + e); } ``` ### getResultSet8+ ### getResultSet\(query: Query, callback: AsyncCallback\): void; 获取与指定 Query 对象匹配的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

callback

AsyncCallback<KvStoreResultSet>

回调函数,返回与指定 Query 对象匹配的 KvStoreResultSet 对象。

- 示例 ``` try { let resultSet; kvStore.getResultSet(function (err, result) { console.log('getResultSet success'); }); }catch(e) { console.log('GetResultSet e ' + e); } ``` ### getResultSet8+ ### getResultSet\(query: Query\): Promise; 获取与指定 Query 对象匹配的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<KvStoreResultSet>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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 : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } kvStore.putBatch(entries).then(async (err) => { console.log('GetResultSet putBatch success'); }).catch((err) => { console.log('PutBatch putBatch fail ' + JSON.stringify(err)); }); const query = new factory.Query(); query.deviceId('localDeviceId'); query.prefixKey("batch_test"); console.log("GetResultSet " + query.getSqlLike()); kvStore.getResultSet(query).then((result) => { console.log('GetResultSet getResultSet success'); resultSet = result; }).catch((err) => { console.log('GetResultSet getResultSet fail ' + JSON.stringify(err)); }); 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); } ``` ### getResultSet8+ ### getResultSet\(deviceId: string, query: Query, callback: AsyncCallback\): void; 获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

KvStoreResultSet对象所属的设备ID。

query

Query

表示查询对象。

callback

AsyncCallback<KvStoreResultSet>

回调函数,返回与指定 Query 对象匹配的 KvStoreResultSet 对象。

- 示例 ``` try { let resultSet; kvStore.getResultSet('test_key_string', 123, function (err, result) { console.log('getResultSet success'); }); }catch(e) { console.log('GetResultSet e ' + e); } ``` ### getResultSet8+ ### getResultSet\(deviceId: string, query: Query\): Promise; 获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

KvStoreResultSet对象所属的设备ID。

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<KvStoreResultSet>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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 : factory.ValueType.STRING, value : 'batch_test_string_value' } } entries.push(entry); } kvStore.putBatch(entries).then(async (err) => { console.log('GetResultSet putBatch success'); }).catch((err) => { console.log('PutBatch putBatch fail ' + JSON.stringify(err)); }); const query = new factory.Query(); query.prefixKey("batch_test"); kvStore.getResultSet('localDeviceId', query).then((result) => { console.log('GetResultSet getResultSet success'); resultSet = result; }).catch((err) => { console.log('GetResultSet getResultSet fail ' + JSON.stringify(err)); }); query.deviceId('localDeviceId'); console.log("GetResultSet " + query.getSqlLike()); kvStore.closeResultSet(resultSet).then((err) => { console.log('GetResultSet closeResultSet success'); }).catch((err) => { console.log('GetResultSet closeResultSet fail ' + JSON.stringify(err)); }); }catch(e) { console.log('GetResultSet e ' + e); } ``` ### closeResultSet8+ ### closeResultSet\(resultSet: KvStoreResultSet, callback: AsyncCallback\): void; 关闭由 getResultSet 返回的 KvStoreResultSet 对象,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

resultSet

KvStoreResultSet

指示要关闭的 KvStoreResultSet 对象。

callback

AsyncCallback<void>

回调函数。

- 示例 ``` 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); } ``` ### closeResultSet8+ ### closeResultSet\(resultSet: KvStoreResultSet\): Promise; 关闭由 getResultSet 返回的 KvStoreResultSet 对象,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

resultSet

KvStoreResultSet

指示要关闭的 KvStoreResultSet 对象。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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); } ``` ### getResultSize8+ ### getResultSize\(query: Query, callback: AsyncCallback\): void; 获取与指定 Query 对象匹配的结果数,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

callback

AsyncCallback<number>

回调函数,返回与指定 Query 对象匹配的结果数。

- 示例 ``` try { // pass query console.log('GetResultSize success'); }catch(e) { console.log('GetResultSize e ' + e); } ``` ### getResultSize8+ ### getResultSize\(query: Query\): Promise; 获取与指定 Query 对象匹配的结果数,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<number>

Promise实例,用于获取异步返回结果。

- 示例 ``` try { // pass query console.log('GetResultSize success'); }catch(e) { console.log('GetResultSize e ' + e); } ``` ### getResultSize8+ ### getResultSize\(deviceId: string, query: Query, callback: AsyncCallback\): void; 获取与指定设备 ID 和 Query 对象匹配的结果数,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

表示结果所属的设备ID。

query

Query

表示查询对象。

callback

AsyncCallback<number>

回调函数,返回与指定 Query 对象匹配的结果数。

- 示例 ``` try { // pass query console.log('GetResultSize success'); }catch(e) { console.log('GetResultSize e ' + e); } ``` ### getResultSize8+ ### getResultSize\(deviceId: string, query: Query\): Promise; 获取与指定设备 ID 和 Query 对象匹配的结果数,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

表示结果所属的设备ID。

query

Query

表示查询对象。

- 返回值:

类型

说明

Promise<number>

Promise实例,用于获取异步返回结果。

- 示例 ``` try { // pass query console.log('GetResultSize success'); }catch(e) { console.log('GetResultSize e ' + e); } ``` ### removeDeviceData8+ ### removeDeviceData\(deviceId: string, callback: AsyncCallback\): void; 从当前数据库中删除指定设备的数据,并通过callback方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

标识要删除其数据的设备。

callback

AsyncCallback<void>

回调函数。

- 示例 ``` 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'; kvStore.removeDeviceData(deviceid, async function (err,data) { if (err == undefined) { console.log('removeDeviceData success'); } else { console.log('testDeviceKvStoreRemoveDeviceData101 removeDeviceData fail'); kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, async function (err,data) { console.log('RemoveDeviceData get success'); }); } }); }); }catch(e) { console.log('testDeviceKvStoreRemoveDeviceData101 e ' + e); } ``` ### removeDeviceData8+ ### removeDeviceData\(deviceId: string\): Promise; 从当前数据库中删除指定设备的数据,并通过Promise方式返回,此方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceId

string

标识要删除其数据的设备。

- 返回值:

类型

说明

Promise<void>

Promise实例,用于获取异步返回结果。

- 示例 ``` 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 removeDeviceData success'); }).catch((err) => { console.log('RemoveDeviceData 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); } ``` ### sync8+ ### sync\(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number\): void; 同步 DeviceKvStore 数据库,该方法为异步方法。 - 参数:

参数名

类型

必填

说明

deviceIdList

string[]

需要同步DeviceKvStore数据库的设备ID列表。

mode

SyncMode

表示同步方式,PUSH、PULL或PUSH_PULL。

allowedDelayMs

number

可选参数,允许延时时间,单位:ms(毫秒)。

- 示例 ``` 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 = ['A12C1F9261528B21F95778D2FDC0B2E33943E6251AC5487F4473D005758905DB']; const mode = factory.SyncMode.PULL_ONLY; kvStore.sync(devices, mode); }); }catch(e) { console.log('Sync e' + e); } ``` ### on8+ ### on\(event: 'syncComplete', syncCallback: Callback\>): void; 注册同步 DeviceKvStore 数据库回调,通过异步回调返回。 - 参数:

参数名

类型

必填

说明

event

'syncComplete'

设备状态改变时触发的事件名。

syncCallback

Callback<Array<[string, number]>>>

用于向调用方发送同步结果的回调。

- 示例 ``` const KEY_TEST_FLOAT_ELEMENT = 'key_test_float'; const VALUE_TEST_FLOAT_ELEMENT = 321.12; try { kvStore.on('dataChange', 0, function (data) { console.log('OnChange 0' + data) }); kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => { console.log('OnChange put success'); }).catch((error) => { console.log('OnChange put fail ' + error); }); }catch(e) { console.log('OnChange put e ' + e); } ``` ### off8+ ### off\(event: 'syncComplete', syncCallback: Callback>\): void; 取消注册同步 DeviceKvStore 数据库回调,通过异步回调返回。 - 参数:

参数名

类型

必填

说明

event

'syncComplete'

设备状态改变时触发的事件名。

syncCallback

Callback<Array<[string, number]>>>

用于向调用方发送同步结果的回调。

- 示例 ``` try { const func = function (data) { console.log('OffChange 0' + data) }; kvStore.on('dataChange', 0, func); kvStore.off('dataChange', func); }catch(e) { console.log('OffChange001 e ' + e); } ``` ## SyncMode 用于指定同步模式。

名称

默认值

说明

PULL_ONLY

0

表示只能从远端拉取数据到本端。

PUSH_ONLY

1

表示只能从本端推送数据到对端。

PUSH_PULL

2

表示从本端推送数据到远端,然后从远端拉取数据到本端。