0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发接口数据管理:【@ohos.data.distributedData (分布式数据管理)】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-07 09:30 次阅读

分布式数据管理

分布式数据管理为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式数据各个接口,应用程序可将数据保存到分布式数据库中,并可对分布式数据库中的数据进行增加、删除、修改、查询、同步等操作。

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

  • [KVManager]:数据管理实例,用于获取KVStore的相关信息
  • [KvStoreResultSet8+]:提供获取KVStore数据库结果集的相关方法,包括查询和移动数据读取位置等。
  • [Query8+]:使用谓词表示数据库查询,提供创建Query实例、查询数据库中的数据和添加谓词的方法。
  • [KVStore]:KVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅数据同步完成的方法。
  • [SingleKVStore]:单版本分布式数据库,继承自[KVStore],不对数据所属设备进行区分,提供查询数据和同步数据的方法。
  • [DeviceKVStore8+]:设备协同数据库,继承自[KVStore],以设备维度对数据进行区分,提供查询数据和同步数据的方法。

说明:
开发前请熟悉鸿蒙开发指导文档:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
本模块首批接口从APIversion 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

importdistributedDatafrom'@ohos.data.distributedData';

distributedData.createKVManager

createKVManager(config: KVManagerConfig, callback: AsyncCallback): void

创建一个KVManager对象实例,用于管理数据库对象,使用callback异步回调。

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

参数

参数名 参数类型 必填 说明
config [KVManagerConfig] 提供KVManager实例的配置信息,包括调用方的包名和用户信息。
callback AsyncCallback<[KVManager]> 回调函数。返回创建的KVManager对象实例。

示例:

letkvManager;try{constkvManagerConfig = {bundleName:'com.example.datamanagertest',userInfo: {userId:'0',userType: distributedData.UserType.SAME_USER_ID } } 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异步回调。

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

参数:

参数名 参数类型 必填 说明
config [KVManagerConfig] 提供KVManager实例的配置信息,包括调用方的包名和用户信息。

返回值:

类型 说明
Promise<[KVManager]> Promise对象。返回创建的KVManager对象实例。

示例:

letkvManager;try{constkvManagerConfig = {bundleName:'com.example.datamanagertest',userInfo: {userId:'0',userType: distributedData.UserType.SAME_USER_ID } } 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实例的配置信息,包括调用方的包名和用户信息。

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

参数名 参数类型 必填 说明
userInfo [UserInfo] 调用方的用户信息。
bundleName string 调用方的包名。

UserInfo

用户信息。

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

名称 参数类型 必填 说明
userId string 指示要设置的用户ID。
userType [UserType] 指示要设置的用户类型。

UserType

用户类型枚举。

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

名称 说明
SAME_USER_ID 0 使用同一帐户登录不同设备的用户。

KVManager

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

getKVStore

getKVStore(storeId: string, options: Options, callback: AsyncCallback): void

通过指定Options和storeId,创建并获取KVStore数据库,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
storeId string 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH]。
options [Options] 创建KVStore实例的配置信息。
callback AsyncCallback, 回调函数。返回创建的KVStore数据库实例。

示例:

letkvStore;letkvManager;try{constoptions = {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); }

getKVStore

getKVStore(storeId: string, options: Options): Promise

通过指定Options和storeId,创建并获取KVStore数据库,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
storeId string 数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH]。
options [Options] 创建KVStore实例的配置信息。

返回值:

类型 说明
Promise , Promise对象。返回创建的KVStore数据库实例。

示例:

letkvStore;letkvManager;try{constoptions = {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); }

closeKVStore8+

closeKVStore(appId: string, storeId: string, kvStore: KVStore, callback: AsyncCallback): void

通过storeId的值关闭指定的KVStore数据库,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
appId string 所调用数据库方的包名。
storeId string 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH]。
kvStore [KVStore] 要关闭的KVStore数据库。
callback AsyncCallback 回调函数。

示例:

letkvStore;letkvManager;constoptions = {createIfMissing:true,encrypt:false,backup:false,autoSync:true,kvStoreType: distributedData.KVStoreType.SINGLE_VERSION,schema:'',securityLevel: distributedData.SecurityLevel.S2, }try{ kvManager.getKVStore('storeId', options,asyncfunction(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

通过storeId的值关闭指定的KVStore数据库,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
appId string 所调用数据库方的包名。
storeId string 要关闭的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH]。
kvStore [KVStore] 要关闭的KVStore数据库。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvManager;letkvStore;constoptions = {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; kvManager.closeKVStore('appId','storeId', kvStore).then(() = > {console.log('closeKVStore success'); }).catch((err) = > {console.log('closeKVStore err '+JSON.stringify(err)); }); }).catch((err) = > {console.log('CloseKVStore getKVStore err '+JSON.stringify(err)); }); }catch(e) {console.log('closeKVStore e '+ e); }

deleteKVStore8+

deleteKVStore(appId: string, storeId: string, callback: AsyncCallback): void

通过storeId的值删除指定的KVStore数据库,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
appId string 所调用数据库方的包名。
storeId string 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH]。
callback AsyncCallback 回调函数。

示例:

letkvManager;letkvStore;constoptions = {createIfMissing:true,encrypt:false,backup:false,autoSync:true,kvStoreType: distributedData.KVStoreType.SINGLE_VERSION,schema:'',securityLevel: distributedData.SecurityLevel.S2, }try{ kvManager.getKVStore('store', options,asyncfunction(err, store){console.log('getKVStore success'); kvStore = store; kvManager.deleteKVStore('appId','storeId',function(err, data){console.log('deleteKVStore success'); }); }); }catch(e) {console.log('DeleteKVStore e '+ e); }

deleteKVStore8+

deleteKVStore(appId: string, storeId: string): Promise

通过storeId的值删除指定的KVStore数据库,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
appId string 所调用数据库方的包名。
storeId string 要删除的数据库唯一标识符,长度不大于[MAX_STORE_ID_LENGTH]。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvManager;letkvStore;constoptions = {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; kvManager.deleteKVStore('appId','storeId').then(() = > {console.log('deleteKVStore success'); }).catch((err) = > {console.log('deleteKVStore err '+JSON.stringify(err)); }); }).catch((err) = > {console.log('getKVStore err '+JSON.stringify(err)); }); }catch(e) {console.log('deleteKVStore e '+ e); }

getAllKVStoreId8+

getAllKVStoreId(appId: string, callback: AsyncCallback): void

获取所有通过[getKVStore]方法创建的且没有调用[deleteKVStore]方法删除的KVStore数据库的storeId,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
appId string 所调用数据库方的包名。
callback AsyncCallback 回调函数。返回所有创建的KvStore数据库的storeId。

示例:

letkvManager;try{ kvManager.getAllKVStoreId('appId',function(err, data){console.log('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异步回调。

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

参数:

参数名 参数类型 必填 说明
appId string 所调用数据库方的包名。

返回值:

类型 说明
Promise Promise对象。返回所有创建的KvStore数据库的storeId。

示例:

letkvManager;try{console.log('GetAllKVStoreId'); kvManager.getAllKVStoreId('appId').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); }

on('distributedDataServiceDie')8+

on(event: 'distributedDataServiceDie', deathCallback: Callback): void

订阅服务状态变更通知。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。

参数:

参数名 参数类型 必填 说明
event string 订阅的事件名,固定为'distributedDataServiceDie',即服务状态变更事件。
deathCallback Callback 回调函数。

示例:

letkvManager;try{console.log('KVManagerOn');constdeathCallback =function(){console.log('death callback call'); } kvManager.on('distributedDataServiceDie', deathCallback); }catch(e) {console.log("An unexpected error occurred. Error:"+ e); }

off('distributedDataServiceDie')8+

off(event: 'distributedDataServiceDie', deathCallback?: Callback): void

取消订阅服务状态变更通知。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。

参数:

参数名 参数类型 必填 说明
event string 取消订阅的事件名,固定为'distributedDataServiceDie',即服务状态变更事件。
deathCallback Callback 回调函数。

示例:

letkvManager;try{console.log('KVManagerOff');constdeathCallback =function(){console.log('death callback call'); } kvManager.off('distributedDataServiceDie', deathCallback); }catch(e) {console.log("An unexpected error occurred. Error:"+ e); }

Options

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

参数名 参数类型 必填 说明
createIfMissing boolean 当数据库文件不存在时是否创建数据库,默认创建。**系统能力:**SystemCapability.DistributedDataManager.KVStore.Core
encrypt boolean 设置数据库文件是否加密,默认不加密。**系统能力:**SystemCapability.DistributedDataManager.KVStore.Core
backup boolean 设置数据库文件是否备份,默认备份。**系统能力:**SystemCapability.DistributedDataManager.KVStore.Core
autoSync boolean 设置数据库文件是否自动同步,默认不自动同步。**系统能力:**SystemCapability.DistributedDataManager.KVStore.Core需要权限: ohos.permission.DISTRIBUTED_DATASYNC
kvStoreType [KVStoreType] 设置要创建的数据库类型,默认为多设备协同数据库。**系统能力:**SystemCapability.DistributedDataManager.KVStore.Core
securityLevel [SecurityLevel] 设置数据库安全级别,默认不设置安全级别。**系统能力:**SystemCapability.DistributedDataManager.KVStore.Core
schema8+ [Schema] 设置定义存储在数据库中的值。**系统能力:**SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

KVStoreType

KVStore数据库类型枚举。

名称 说明
DEVICE_COLLABORATION 0 表示多设备协同数据库。**系统能力:**SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
SINGLE_VERSION 1 表示单版本数据库。**系统能力:**SystemCapability.DistributedDataManager.KVStore.Core
MULTI_VERSION 2 表示多版本数据库。此类型当前不允许使用。**系统能力:**SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

SecurityLevel

数据库的安全级别枚举。

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

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

Constants

KVStore常量。

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

名称 说明
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对象并将它们放入[Options]中。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。

名称 类型 说明
root8+ [FieldNode] 表示json根对象。
indexes8+ Array 表示json类型的字符串数组。
mode8+ number 表示Schema的模式。
skip8+ number Schema的跳跃大小。

constructor8+

constructor()

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

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。

FieldNode8+

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

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。

名称 类型 说明
nullable8+ boolean 表示数据库字段是否可以为空。
default8+ string 表示Fieldnode的默认值。
type8+ number 表示指定节点对应数据类型的值。

constructor8+

constructor(name: string)

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

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。

参数:

参数名 参数类型 必填 说明
name string FieldNode的值。

appendChild8+

appendChild(child: FieldNode): boolean

在当前 FieldNode 中添加一个子节点。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore。

参数:

参数名 参数类型 必填 说明
child [FieldNode] 要附加的域节点。

返回值:

类型 说明
boolean 返回true表示子节点成功添加到FieldNode;返回false则表示操作失败。

示例:

importddmfrom'@ohos.data.distributedData';try{letnode =newddm.FieldNode("root");letchild1 =newddm.FieldNode("child1");letchild2 =newddm.FieldNode("child2");letchild3 =newddm.FieldNode("child3"); node.appendChild(child1); node.appendChild(child2); node.appendChild(child3);console.log("appendNode "+JSON.stringify(node)); child1 =null; child2 =null; child3 =null; node =null; }catch(e) {console.log("AppendChild "+ e); }

KvStoreResultSet8+

提供获取KVStore数据库结果集的相关方法,包括查询和移动数据读取位置等。

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

getCount8+

getCount(): number

获取结果集中的总行数。

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

返回值:

类型 说明
number 返回数据的总行数。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constcount = resultSet.getCount();console.log("getCount succeed:"+ count); }catch(e) {console.log("getCount failed: "+ e); }

getPosition8+

getPosition(): number

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

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

返回值:

类型 说明
number 返回当前读取位置。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeeded.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constposition = resultSet.getPosition();console.log("getPosition succeed:"+ position); }catch(e) {console.log("getPosition failed: "+ e); }

moveToFirst8+

moveToFirst(): boolean

将读取位置移动到第一行。如果结果集为空,则返回false。

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

返回值:

类型 说明
boolean 返回true表示操作成功;返回false则表示操作失败。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constmoved1 = resultSet.moveToFirst();console.log("moveToFirst succeed: "+ moved1); }catch(e) {console.log("moveToFirst failed "+ e); }

moveToLast8+

moveToLast(): boolean

将读取位置移动到最后一行。如果结果集为空,则返回false。

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

返回值:

类型 说明
boolean 返回true表示操作成功;返回false则表示操作失败。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constmoved2 = resultSet.moveToLast();console.log("moveToLast succeed:"+ moved2); }catch(e) {console.log("moveToLast failed: "+ e); }

moveToNext8+

moveToNext(): boolean

将读取位置移动到下一行。如果结果集为空,则返回false。

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

返回值:

类型 说明
boolean 返回true表示操作成功;返回false则表示操作失败。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constmoved3 = resultSet.moveToNext();console.log("moveToNext succeed: "+ moved3); }catch(e) {console.log("moveToNext failed: "+ e); }

moveToPrevious8+

moveToPrevious(): boolean

将读取位置移动到上一行。如果结果集为空,则返回false。

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

返回值:

类型 说明
boolean 返回true表示操作成功;返回false则表示操作失败。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constmoved4 = resultSet.moveToPrevious();console.log("moveToPrevious succeed:"+ moved4); }catch(e) {console.log("moveToPrevious failed: "+ e); }

move8+

move(offset: number): boolean

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

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

参数:

参数名 参数类型 必填 说明
offset number 表示与当前位置的相对偏移量,负偏移表示向后移动,正偏移表示向前移动。

返回值:

类型 说明
boolean 返回true表示操作成功;返回false则表示操作失败。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constmoved5 = resultSet.move();console.log("move succeed:"+ moved5); }catch(e) {console.log("move failed: "+ e); }

moveToPosition8+

moveToPosition(position: number): boolean

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

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

参数:

参数名 参数类型 必填 说明
position number 表示绝对位置。

返回值:

类型 说明
boolean 返回true表示操作成功;返回false则表示操作失败。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constmoved6 = resultSet.moveToPosition();console.log("moveToPosition succeed: "+ moved6); }catch(e) {console.log("moveToPosition failed: "+ e); }

isFirst8+

isFirst(): boolean

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

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

返回值:

类型 说明
boolean 返回true表示读取位置为第一行;返回false表示读取位置不是第一行。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constisfirst = resultSet.isFirst();console.log("Check isFirst succeed:"+ isfirst); }catch(e) {console.log("Check isFirst failed: "+ e); }

isLast8+

isLast(): boolean

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

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

返回值:

类型 说明
boolean 返回true表示读取位置为最后一行;返回false表示读取位置不是最后一行。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constislast = resultSet.isLast();console.log("Check isLast succeed: "+ islast); }catch(e) {console.log("Check isLast failed: "+ e); }

isBeforeFirst8+

isBeforeFirst(): boolean

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

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

返回值:

类型 说明
boolean 返回true表示读取位置在第一行之前;返回false表示读取位置不在第一行之前。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constisbeforefirst = resultSet.isBeforeFirst();console.log("Check isBeforeFirst succeed: "+ isbeforefirst); }catch(e) {console.log("Check isBeforeFirst failed: "+ e); }

isAfterLast8+

isAfterLast(): boolean

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

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

返回值:

类型 说明
boolean 返回true表示读取位置在最后一行之后;返回false表示读取位置不在最后一行之后。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constisafterlast = resultSet.isAfterLast();console.log("Check isAfterLast succeed:"+ isafterlast); }catch(e) {console.log("Check isAfterLast failed: "+ e); }

getEntry8+

getEntry(): Entry

从当前位置获取对应的键值对。

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

返回值:

类型 说明
[Entry] 返回键值对。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+ err); });constentry = resultSet.getEntry();console.log("getEntry succeed:"+JSON.stringify(entry)); }catch(e) {console.log("getEntry failed: "+ e); }

Query8+

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

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

constructor8+

constructor()

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

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

reset8+

reset(): Query

重置Query对象。

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

返回值:

类型 说明
[Query] 返回重置的Query对象。

示例:

try { letquery= 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); }

equalTo8+

equalTo(field: string, value: number|string|boolean): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
value number string boolean

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.equalTo("field","value"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

notEqualTo8+

notEqualTo(field: string, value: number|string|boolean): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
value number string boolean

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.notEqualTo("field","value"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

greaterThan8+

greaterThan(field: string, value: number|string|boolean): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
value number string boolean

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.greaterThan("field","value"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

lessThan8+

lessThan(field: string, value: number|string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
value number string boolean

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.lessThan("field","value"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

greaterThanOrEqualTo8+

greaterThanOrEqualTo(field: string, value: number|string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
value number string boolean

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.greaterThanOrEqualTo("field","value"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

[](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md#lessthanorequalto8)lessThanOrEqualTo8+

lessThanOrEqualTo(field: string, value: number|string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
value number string boolean

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.lessThanOrEqualTo("field","value"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

isNull8+

isNull(field: string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.isNull("field"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

inNumber8+

inNumber(field: string, valueList: number[]): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
valueList number[] 表示指定的值列表。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.inNumber("field", [0, 1]); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

inString8+

inString(field: string, valueList: string[]): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
valueList string[] 表示指定的字符串值列表。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try{letquery =newdistributedData.Query(); query.inString("field", ['test1','test2']);console.log("query is "+ query.getSqlLike()); query =null; }catch(e) {console.log("duplicated calls should be ok :"+ e); }

notInNumber8+

notInNumber(field: string, valueList: number[]): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
valueList number[] 表示指定的值列表。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.notInNumber("field", [0, 1]); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

notInString8+

notInString(field: string, valueList: string[]): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
valueList string[] 表示指定的字符串值列表。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try{letquery =newdistributedData.Query(); query.notInString("field", ['test1','test2']);console.log("query is "+ query.getSqlLike()); query =null; }catch(e) {console.log("duplicated calls should be ok :"+ e); }

like8+

like(field: string, value: string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
value string 表示指定的字符串值。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.like("field","value"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

unlike8+

unlike(field: string, value: string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。
value string 表示指定的字符串值。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.unlike("field","value"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

and8+

and(): Query

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

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

返回值:

类型 说明
[Query] 返回查询对象。

示例:

try { letquery= 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("duplicated calls should be ok :"+e); }

or8+

or(): Query

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

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

返回值:

类型 说明
[Query] 返回查询对象。

示例:

try { letquery= 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("duplicated calls should be ok :"+e); }

orderByAsc8+

orderByAsc(field: string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.notEqualTo("field","value");query.orderByAsc("field"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

orderByDesc8+

orderByDesc(field: string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.notEqualTo("field","value");query.orderByDesc("field"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

[](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md#limit8)limit8+

limit(total: number, offset: number): Query

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

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

参数:

参数名 参数类型 必填 说明
total number 表示指定的结果数。
offset number 表示起始位置。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

lettotal= 10; let offset = 1; try { letquery= new distributedData.Query();query.notEqualTo("field","value");query.limit(total, offset); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

isNotNull8+

isNotNull(field: string): Query

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

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

参数:

参数名 参数类型 必填 说明
fieId string 表示指定字段,不能包含' ^ '。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.isNotNull("field"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

beginGroup8+

beginGroup(): Query

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

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

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.beginGroup();query.isNotNull("field");query.endGroup(); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

[](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md#endgroup8)endGroup8+

endGroup(): Query

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

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

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.beginGroup();query.isNotNull("field");query.endGroup(); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

prefixKey8+

prefixKey(prefix: string): Query

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

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

参数:

参数名 参数类型 必填 说明
prefix string 表示指定的键前缀。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.prefixKey("$.name");query.prefixKey("0"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

setSuggestIndex8+

setSuggestIndex(index: string): Query

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

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

参数:

参数名 参数类型 必填 说明
index string 指示要设置的索引。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

try { letquery= new distributedData.Query();query.setSuggestIndex("$.name");query.setSuggestIndex("0"); console.log("query is "+query.getSqlLike());query= null; } catch (e) { console.log("duplicated calls should be ok :"+e); }

deviceId8+

deviceId(deviceId:string):Query

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

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

参数:

参数名 参数类型 必填 说明
deviceId string 指示查询的设备ID。

返回值:

类型 说明
[Query] 返回Query对象。

示例:

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

getSqlLike8+

getSqlLike():string

获取Query对象的查询语句。

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

返回值:

类型 说明
string 返回一个字段列中包含对应子串的结果。

示例:

try{letquery =newdistributedData.Query();letsql1 = query.getSqlLike();console.log("GetSqlLike sql="+ sql1); }catch(e) {console.log("duplicated calls should be ok : "+ e); }

KVStore

KVStore数据库实例,提供增加数据、删除数据和订阅数据变更、订阅数据同步完成的方法。

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

put

put(key: string, value: Uint8Array | string | number | boolean, callback: AsyncCallback): void

添加指定类型键值对到数据库,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
key string 要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH]。
value Uint8Array string number
callback AsyncCallback 回调函数。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string';constVALUE_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异步回调。

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

参数:

参数名 参数类型 必填 说明
key string 要添加数据的key,不能为空且长度不大于[MAX_KEY_LENGTH]。
value Uint8Array string number

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string';constVALUE_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异步回调。

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

参数:

参数名 参数类型 必填 说明
key string 要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH]。
callback AsyncCallback 回调函数。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string';constVALUE_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异步回调。

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

参数:

参数名 参数类型 必填 说明
key string 要删除数据的key,不能为空且长度不大于[MAX_KEY_LENGTH]。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string';constVALUE_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('dataChange')

on(event: 'dataChange', type:SubscribeType, observer: Callback): void

订阅指定类型的数据变更通知。

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

参数:

参数名 参数类型 必填 说明
event string 订阅的事件名,固定为'dataChange',表示数据变更事件。
type [SubscribeType] 表示订阅的类型。
observer Callback<[ChangeNotification]> 回调函数。

示例:

letkvStore; kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL,function(data){console.log("dataChange callback call data: "+JSON.stringify(data)); });

on('syncComplete')

on(event: 'syncComplete', syncCallback: Callback>): void

订阅同步完成事件回调通知。

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

参数:

参数名 参数类型 必填 说明
event string 订阅的事件名,固定为'syncComplete',表示同步完成事件。
syncCallback Callback> 回调函数。

示例:

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

off('dataChange')8+

off(event:'dataChange', observer?: Callback): void

取消订阅数据变更通知。

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

参数:

参数名 参数类型 必填 说明
event string 取消订阅的事件名,固定为'dataChange',表示数据变更事件。
observer Callback<[ChangeNotification]> 回调函数。

示例:

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

putBatch8+

putBatch(entries: Entry[], callback: AsyncCallback): void

批量插入键值对到KVStore数据库中,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
entries [Entry][] 表示要批量插入的键值对。
callback Asyncallback 回调函数。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries,asyncfunction(err,data){console.log('putBatch success'); kvStore.getEntries('batch_test_string_key',function(err,entries){console.log('getEntries success');console.log('entries.length: '+ entries.length);console.log('entries[0]: '+JSON.stringify(entries[0])); }); }); }catch(e) {console.log('PutBatch e '+JSON.stringify(e)); }

[](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md#putbatch8-1)putBatch8+

putBatch(entries: Entry[]): Promise

批量插入键值对到KVStore数据库中,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
entries [Entry][] 表示要批量插入的键值对。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success'); kvStore.getEntries('batch_test_string_key').then((entries) = > {console.log('getEntries success');console.log('PutBatch '+JSON.stringify(entries)); }).catch((err) = > {console.log('getEntries fail '+JSON.stringify(err)); }); }).catch((err) = > {console.log('putBatch fail '+JSON.stringify(err)); }); }catch(e) {console.log('PutBatch e '+JSON.stringify(e)); }

deleteBatch8+

deleteBatch(keys: string[], callback: AsyncCallback): void

批量删除KVStore数据库中的键值对,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
keys string[] 表示要批量删除的键值对。
callback AsyncCallback 回调函数。

示例:

letkvStore;try{letentries = [];letkeys = [];for(vari =0; i <5; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); keys.push(key + i); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries,asyncfunction(err,data){console.log('putBatch success'); kvStore.deleteBatch(keys,asyncfunction(err,data){console.log('deleteBatch success'); }); }); }catch(e) {console.log('DeleteBatch e '+ e); }

deleteBatch8+

deleteBatch(keys: string[]): Promise

批量删除KVStore数据库中的键值对,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
keys string[] 表示要批量删除的键值对。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;try{letentries = [];letkeys = [];for(vari =0; i <5; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); keys.push(key + i); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success'); kvStore.deleteBatch(keys).then((err) = > {console.log('deleteBatch success'); }).catch((err) = > {console.log('deleteBatch fail '+JSON.stringify(err)); }); }).catch((err) = > {console.log('putBatch fail '+JSON.stringify(err)); }); }catch(e) {console.log('DeleteBatch e '+ e); }

startTransaction8+

startTransaction(callback: AsyncCallback): void

启动KVStore数据库中的事务,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
callback AsyncCallback 回调函数。

示例:

letkvStore;functionputBatchString(len, prefix){letentries = [];for(vari =0; i < len; i++) {varentry = {key: prefix + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); }returnentries; }try{varcount =0; kvStore.on('dataChange',0,function(data){console.log('startTransaction 0'+ data) count++; }); kvStore.startTransaction(asyncfunction(err,data){console.log('startTransaction success');letentries = putBatchString(10,'batch_test_string_key');console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries,asyncfunction(err,data){console.log('putBatch success'); }); }); }catch(e) {console.log('startTransaction e '+ e); }

startTransaction8+

startTransaction(): Promise

启动KVStore数据库中的事务,使用Promise异步回调。

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

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;try{varcount =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); }

commit8+

commit(callback: AsyncCallback): void

提交KVStore数据库中的事务,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
callback AsyncCallback 回调函数。

示例:

letkvStore;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); }

commit8+

commit(): Promise

提交KVStore数据库中的事务,使用Promise异步回调。

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

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;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); }

rollback8+

rollback(callback: AsyncCallback): void

在KVStore数据库中回滚事务,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
callback AsyncCallback 回调函数。

示例:

letkvStore;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); }

rollback8+

rollback(): Promise

在KVStore数据库中回滚事务,使用Promise异步回调。

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

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;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); }

enableSync8+

enableSync(enabled: boolean, callback: AsyncCallback): void

设定是否开启同步,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
enabled boolean 设定是否开启同步,true表示开启同步,false表示不启用同步。
callback AsyncCallback 回调函数。

示例:

letkvStore;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); }

enableSync8+

enableSync(enabled: boolean): Promise

设定是否开启同步,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
enabled boolean 设定是否开启同步,true表示开启同步,false表示不启用同步。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;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); }

setSyncRange8+

setSyncRange(localLabels: string[], remoteSupportLabels: string[], callback: AsyncCallback): void

设置同步范围标签,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
localLabels string[] 表示本地设备的同步标签。
remoteSupportLabels string[] 表示要同步数据的设备的同步标签。
callback AsyncCallback 回调函数。

示例:

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

setSyncRange8+

setSyncRange(localLabels: string[], remoteSupportLabels: string[]): Promise

设置同步范围标签,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
localLabels string[] 表示本地设备的同步标签。
remoteSupportLabels string[] 表示要同步数据的设备的同步标签。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;try{constlocalLabels = ['A','B'];constremoteSupportLabels = ['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); }

SubscribeType

订阅类型枚举。

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

名称 说明
SUBSCRIBE_TYPE_LOCAL 0 表示订阅本地数据变更。
SUBSCRIBE_TYPE_REMOTE 1 表示订阅远端数据变更。
SUBSCRIBE_TYPE_ALL 2 表示订阅远端和本地数据变更。

ChangeNotification

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

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

名称 参数类型 可读 可写 说明
insertEntries [Entry][] 数据添加记录。
updateEntries [Entry][] 数据更新记录。
deleteEntries [Entry][] 数据删除记录。
deviceId string 设备ID,此处为设备UUID。

Entry

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

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

名称 参数类型 可读 可写 说明
key string 键值。
value [Value] 值对象。

Value

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

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

名称 参数类型 可读 可写 说明
type [ValueType] 值类型。
value Uint8Array string number boolean

ValueType

数据类型枚举。

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

名称 说明
STRING 0 表示值类型为字符串。
INTEGER 1 表示值类型为整数。
FLOAT 2 表示值类型为浮点数。
BYTE_ARRAY 3 表示值类型为字节数组。
BOOLEAN 4 表示值类型为布尔值。
DOUBLE 5 表示值类型为双浮点数。

SingleKVStore

单版本数据库,继承自[KVStore]数据库,提供查询数据和同步数据的方法。

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

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

get

get(key: string, callback: AsyncCallback): void

获取指定键的值,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
key string 要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH]。
callback AsyncCallback) 回调函数。返回获取查询的值。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string';constVALUE_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异步回调。

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

参数:

参数名 参数类型 必填 说明
key string 要查询数据的key,不能为空且长度不大于[MAX_KEY_LENGTH]。

返回值:

类型 说明
Promise Promise对象。返回获取查询的值。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string';constVALUE_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异步回调。

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

参数:

参数名 参数类型 必填 说明
keyPrefix string 表示要匹配的键前缀。
callback AsyncCallback<[Entry][]> 回调函数。返回匹配指定前缀的键值对列表。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_number_key';varentry = {key: key + i,value: {type: distributedData.ValueType.INTEGER,value:222} } entries.push(entry); } kvStore.putBatch(entries,asyncfunction(err,data){console.log('putBatch success'); kvStore.getEntries('batch_test_number_key',function(err,entries){console.log('getEntries success');console.log('entries.length: '+ entries.length);console.log('entries[0]: '+JSON.stringify(entries[0])); }); }); }catch(e) {console.log('PutBatch e '+ e); }

getEntries8+

getEntries(keyPrefix: string): Promise

获取匹配指定键前缀的所有键值对,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
keyPrefix string 表示要匹配的键前缀。

返回值:

类型 说明
Promise<[Entry][]> Promise对象。返回匹配指定前缀的键值对列表。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.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((entries) = > {console.log('getEntries success');console.log('entries.length: '+ entries.length);console.log('entries[0]: '+JSON.stringify(entries[0]));console.log('entries[0].value: '+JSON.stringify(entries[0].value));console.log('entries[0].value.value: '+ entries[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); }

[](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md#getentries8-2)getEntries8+

getEntries(query: Query, callback: AsyncCallback): void

获取与指定Query对象匹配的键值对列表,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
query [Query] 表示要匹配的键前缀。
callback AsyncCallback<[Entry][]> 回调函数。返回与指定Query对象匹配的键值对列表。

示例:

letkvStore;try{vararr =newUint8Array([21,31]);letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_bool_key';varentry = {key: key + i,value: {type: distributedData.ValueType.BYTE_ARRAY,value: arr } } entries.push(entry); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries,asyncfunction(err,data){console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getEntries(query,function(err,entries){console.log('getEntries success');console.log('entries.length: '+ entries.length);console.log('entries[0]: '+JSON.stringify(entries[0])); }); });console.log('GetEntries success'); }catch(e) {console.log('GetEntries e '+ e); }

getEntries8+

getEntries(query: Query): Promise

获取与指定Query对象匹配的键值对列表,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。

返回值:

类型 说明
Promise<[Entry][]> Promise对象。返回与指定Query对象匹配的键值对列表。

示例:

letkvStore;try{vararr =newUint8Array([21,31]);letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_bool_key';varentry = {key: key + i,value: {type: distributedData.ValueType.BYTE_ARRAY,value: arr } } entries.push(entry); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getEntries(query).then((entries) = > {console.log('getEntries success'); }).catch((err) = > {console.log('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异步回调。

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

参数:

参数名 参数类型 必填 说明
keyPrefix string 表示要匹配的键前缀。
callback AsyncCallback<[KvStoreResultSet]> 回调函数。返回具有指定前缀的结果集。

示例:

letkvStore;try{letresultSet;letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries,asyncfunction(err, data){console.log('GetResultSet putBatch success'); kvStore.getResultSet('batch_test_string_key',asyncfunction(err, result){console.log('GetResultSet getResultSet succeed.'); 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异步回调。

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

参数:

参数名 参数类型 必填 说明
keyPrefix string 表示要匹配的键前缀。

返回值:

类型 说明
Promise<[KvStoreResultSet]> Promise对象。返回具有指定前缀的结果集。

示例:

letkvStore;try{letresultSet;letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success'); }).catch((err) = > {console.log('PutBatch putBatch fail '+JSON.stringify(err)); }); kvStore.getResultSet('batch_test_string_key').then((result) = > {console.log('GetResult getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+JSON.stringify(err)); }); kvStore.closeResultSet(resultSet).then((err) = > {console.log('GetResult closeResultSet success'); }).catch((err) = > {console.log('closeResultSet fail '+JSON.stringify(err)); }); }catch(e) {console.log('GetResult e '+ e); }

getResultSet8+

getResultSet(query: Query, callback: AsyncCallback): void

获取与指定Query对象匹配的KvStoreResultSet对象,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
query Query 表示查询对象。
callback AsyncCallback<[KvStoreResultSet]> 回调函数,获取与指定Query对象匹配的KvStoreResultSet对象。

示例:

letkvStore;try{letresultSet;letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries,asyncfunction(err, data){console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getResultSet(query,asyncfunction(err, result){console.log('getResultSet succeed.'); resultSet = result; }); }); }catch(e) {console.log('GetResultSet e '+ e); }

getResultSet8+

getResultSet(query: Query): Promise

获取与指定Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。

返回值:

类型 说明
Promise<[KvStoreResultSet]> Promise对象。获取与指定Query对象匹配的KvStoreResultSet对象。

示例:

letkvStore;try{letresultSet;letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success'); }).catch((err) = > {console.log('putBatch fail '+JSON.stringify(err)); });constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getResultSet(query).then((result) = > {console.log(' getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+JSON.stringify(err)); }); }catch(e) {console.log('GetResultSet e '+ e); }

closeResultSet8+

closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback): void

关闭由[SingleKvStore.getResultSet]返回的KvStoreResultSet对象,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
resultSet [KvStoreResultSet] 表示要关闭的KvStoreResultSet对象。
callback AsyncCallback 回调函数。

示例:

letkvStore;try{letresultSet =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

关闭由[SingleKvStore.getResultSet]返回的KvStoreResultSet对象,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
resultSet [KvStoreResultSet] 表示要关闭的KvStoreResultSet对象。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;try{letresultSet =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异步回调。

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

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。
callback AsyncCallback 回调函数。返回与指定Query对象匹配的结果数。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries,asyncfunction(err, data){console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getResultSize(query,asyncfunction(err, resultSize){console.log('getResultSet succeed.'); }); }); }catch(e) {console.log('GetResultSize e '+ e); }

getResultSize8+

getResultSize(query: Query): Promise

获取与指定Query对象匹配的结果数,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。

返回值:

类型 说明
Promise Promise对象。获取与指定Query对象匹配的结果数。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success'); }).catch((err) = > {console.log('putBatch fail '+JSON.stringify(err)); });constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getResultSize(query).then((resultSize) = > {console.log('getResultSet succeed.'); }).catch((err) = > {console.log('getResultSet failed: '+JSON.stringify(err)); }); }catch(e) {console.log('GetResultSize e '+ e); }

removeDeviceData8+

removeDeviceData(deviceId: string, callback: AsyncCallback): void

删除指定设备的数据,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
deviceId string 表示要删除设备的名称。
callback AsyncCallback 回调函数。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string_2';constVALUE_TEST_STRING_ELEMENT ='value-string-002';try{ kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT,asyncfunction(err,data){console.log('put success');constdeviceid ='no_exist_device_id'; kvStore.removeDeviceData(deviceid,asyncfunction(err,data){if(err ==undefined) {console.log('removeDeviceData success'); }else{console.log('removeDeviceData fail'); kvStore.get(KEY_TEST_STRING_ELEMENT,asyncfunction(err,data){console.log('RemoveDeviceData get success'); }); } }); }); }catch(e) {console.log('RemoveDeviceData e '+ e); }

removeDeviceData8+

removeDeviceData(deviceId: string): Promise

删除指定设备的数据,使用Promise异步回调。

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

参数:

参数名 参数类型 必填 说明
deviceId string 表示要删除设备的名称。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string_2';constVALUE_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)); });constdeviceid ='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); }

on('syncComplete')8+

on(event: 'syncComplete', syncCallback: Callback>): void

订阅同步完成事件回调通知。

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

参数:

参数名 参数类型 必填 说明
event string 订阅的事件名,固定为'syncComplete',表示同步完成事件。
syncCallback Callback> 回调函数。用于向调用方发送同步结果的回调。

示例:

letkvStore;constKEY_TEST_FLOAT_ELEMENT ='key_test_float';constVALUE_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); }

off('syncComplete')8+

off(event: 'syncComplete', syncCallback?: Callback>): void

取消订阅同步完成事件回调通知。

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

参数:

参数名 参数类型 必填 说明
event string 取消订阅的事件名,固定为'syncComplete',表示同步完成事件。
syncCallback Callback> 回调函数。用于向调用方发送同步结果的回调。

示例:

letkvStore;try{constfunc =function(data){console.log('syncComplete '+ data) }; kvStore.on('syncComplete', func); kvStore.off('syncComplete', func); }catch(e) {console.log('syncComplete e '+ e); }

sync

sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void

在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述]。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC。

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

参数:

参数名 参数类型 必填 说明
deviceIdList string[] 同一组网环境下,需要同步的设备的deviceId列表。
mode [SyncMode] 同步模式。
allowedDelayMs number 可选参数,允许延时时间,单位:ms(毫秒)。

示例:

letkvStore;kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY,1000);

etSyncParam8+

setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback): void

设置数据库同步允许的默认延迟,使用callback异步回调。

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

参数:

参数名 参数类型 必填 说明
defaultAllowedDelayMs number 表示数据库同步允许的默认延迟,以毫秒为单位。
callback AsyncCallback 回调函数。

示例:

letkvStore;try{constdefaultAllowedDelayMs =500; kvStore.setSyncParam(defaultAllowedDelayMs,function(err,data){console.log('SetSyncParam put success'); }); }catch(e) {console.log('testSingleKvStoreSetSyncParam e '+ e); }

setSyncParam8+

setSyncParam(defaultAllowedDelayMs: number): Promise

设置数据库同步允许的默认延迟,使用Promise异步回调。

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

参数:

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

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;try{constdefaultAllowedDelayMs =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异步回调。

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

参数:

参数名 参数类型 必填 说明
callback AsyncCallback<[SecurityLevel]> 回调函数。返回数据库的安全级别。

示例:

letkvStore;try{ kvStore.getSecurityLevel(function(err,data){console.log('getSecurityLevel success'); }); }catch(e) {console.log('GetSecurityLevel e '+ e); }

getSecurityLevel8+

getSecurityLevel(): Promise

获取数据库的安全级别,使用Promise异步回调。

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

返回值:

类型 说明
Promise<[SecurityLevel]> Promise对象。返回数据库的安全级别。

示例:

letkvStore;try{ kvStore.getSecurityLevel().then((data) = > {console.log(' getSecurityLevel success'); }).catch((err) = > {console.log('getSecurityLevel fail '+JSON.stringify(err)); }); }catch(e) {console.log('GetSecurityLevel e '+ e); }

DeviceKVStore8+

设备协同数据库,继承自KVStore,提供查询数据和同步数据的方法。

设备协同数据库,以设备维度对数据进行区分,每台设备仅能写入和修改本设备的数据,其它设备的数据对其是只读的,无法修改其它设备的数据。

比如,可以使用设备协同数据库实现设备间的图片分享,可以查看其他设备的图片,但无法修改和删除其他设备的图片。

在调用DeviceKVStore的方法前,需要先通过[getKVStore]构建一个DeviceKVStore实例。

get8+

get(deviceId: string, key: string, callback: AsyncCallback): void

获取与指定设备ID和key匹配的string值,使用callback异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 标识要查询其数据的设备。
key string 表示要查询key值的键。
callback AsyncCallback 回调函数,返回匹配给定条件的字符串值。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string_2';constVALUE_TEST_STRING_ELEMENT ='value-string-002';try{ kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT,asyncfunction(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和key匹配的string值,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 标识要查询其数据的设备。
key string 表示要查询key值的键。

返回值:

类型 说明
Promise Promise对象。返回匹配给定条件的字符串值。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string_2';constVALUE_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和key前缀匹配的所有键值对,使用callback异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 标识要查询其数据的设备。
keyPrefix string 表示要匹配的键前缀。
callback AsyncCallback<[Entry][]> 回调函数,返回满足给定条件的所有键值对的列表。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); }console.log('entries: '+ entries); kvStore.putBatch(entries,asyncfunction(err,data){console.log('putBatch success'); kvStore.getEntries('localDeviceId','batch_test_string_key',function(err,entries){console.log('getEntries success');console.log('entries.length: '+ entries.length);console.log('entries[0]: '+JSON.stringify(entries[0])); }); }); }catch(e) {console.log('PutBatch e '+ e); }

getEntries8+

getEntries(deviceId: string, keyPrefix: string): Promise

获取与指定设备ID和key前缀匹配的所有键值对,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 标识要查询其数据的设备。
keyPrefix string 表示要匹配的键前缀。

返回值:

类型 说明
Promise<[Entry][]> Promise对象。返回匹配给定条件的所有键值对的列表。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.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((entries) = > {console.log('getEntries success');console.log('entries.length: '+ entries.length);console.log('entries[0]: '+JSON.stringify(entries[0]));console.log('entries[0].value: '+JSON.stringify(entries[0].value));console.log('entries[0].value.value: '+ entries[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异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。
callback AsyncCallback<[Entry][]> 回调函数,返回与指定Query对象匹配的键值对列表。

示例:

letkvStore;try{vararr =newUint8Array([21,31]);letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_bool_key';varentry = {key: key + i,value: {type: distributedData.ValueType.BYTE_ARRAY,value: arr } } entries.push(entry); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries,asyncfunction(err,data){console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); query.deviceId('localDeviceId'); kvStore.getEntries(query,function(err,entries){console.log('getEntries success');console.log('entries.length: '+ entries.length);console.log('entries[0]: '+JSON.stringify(entries[0])); }); });console.log('GetEntries success'); }catch(e) {console.log('GetEntries e '+ e); }

getEntries8+

getEntries(query: Query): Promise

获取与指定Query对象匹配的键值对列表,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。

返回值:

类型 说明
Promise<[Entry][]> Promise对象。返回与指定Query对象匹配的键值对列表。

示例:

letkvStore;try{vararr =newUint8Array([21,31]);letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_bool_key';varentry = {key: key + i,value: {type: distributedData.ValueType.BYTE_ARRAY,value: arr } } entries.push(entry); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getEntries(query).then((entries) = > {console.log('getEntries success'); }).catch((err) = > {console.log('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); }

getEntries8+

getEntries(deviceId: string, query: Query, callback: AsyncCallback): void

获取与指定设备ID和Query对象匹配的键值对列表,使用callback异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 键值对所属的设备ID。
query [Query] 表示查询对象。
callback AsyncCallback<[Entry][]> 回调函数。返回与指定设备ID和Query对象匹配的键值对列表。

示例:

letkvStore;try{vararr =newUint8Array([21,31]);letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_bool_key';varentry = {key: key + i,value: {type: distributedData.ValueType.BYTE_ARRAY,value: arr } } entries.push(entry); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries,asyncfunction(err,data){console.log('putBatch success');varquery =newdistributedData.Query(); query.deviceId('localDeviceId'); query.prefixKey("batch_test"); kvStore.getEntries('localDeviceId', query,function(err,entries){console.log('getEntries success');console.log('entries.length: '+ entries.length);console.log('entries[0]: '+JSON.stringify(entries[0])); }) });console.log('GetEntries success'); }catch(e) {console.log('GetEntries e '+ e); }

getEntries8+

getEntries(deviceId: string, query: Query): Promise

获取与指定设备ID和Query对象匹配的键值对列表,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 键值对所属的设备ID。
query [Query] 表示查询对象。

返回值:

类型 说明
Promise<[Entry][]> Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。

示例:

letkvStore;try{vararr =newUint8Array([21,31]);letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_bool_key';varentry = {key: key + i,value: {type: distributedData.ValueType.BYTE_ARRAY,value: arr } } entries.push(entry); }console.log('entries: '+JSON.stringify(entries)); kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success');varquery =newdistributedData.Query(); query.deviceId('localDeviceId'); query.prefixKey("batch_test"); kvStore.getEntries('localDeviceId', query).then((entries) = > {console.log('getEntries success'); }).catch((err) = > {console.log('getEntries fail '+JSON.stringify(err)); }); }).catch((err) = > {console.log('putBatch fail '+JSON.stringify(err)); });console.log('GetEntries success'); }catch(e) {console.log('GetEntries e '+ e); }

getResultSet8+[]()

getResultSet(deviceId: string, keyPrefix: string, callback: AsyncCallback): void

获取与指定设备ID和key前缀匹配的KvStoreResultSet对象,使用callback异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 标识要查询其数据的设备。
keyPrefix string 表示要匹配的键前缀。
callback AsyncCallback<[KvStoreResultSet][]> 回调函数。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('localDeviceId','batch_test_string_key',asyncfunction(err, result){console.log('getResultSet succeed.'); 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和key前缀匹配的KvStoreResultSet对象,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 标识要查询其数据的设备。
keyPrefix string 表示要匹配的键前缀。

返回值:

类型 说明
Promise<[KvStoreResultSet][]> Promise对象。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。

示例:

letkvStore;try{letresultSet; kvStore.getResultSet('localDeviceId','batch_test_string_key').then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+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异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。
callback AsyncCallback<[KvStoreResultSet][]> 回调函数,返回与指定Query对象匹配的KvStoreResultSet对象。

示例:

letkvStore;try{letresultSet;letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries,asyncfunction(err, data){console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); query.deviceId('localDeviceId'); kvStore.getResultSet(query,asyncfunction(err, result){console.log('getResultSet succeed.'); resultSet = result; kvStore.closeResultSet(resultSet,function(err, data){console.log('closeResultSet success'); }) }); }); }catch(e) {console.log('GetResultSet e '+ e); }

getResultSet8+

getResultSet(query: Query): Promise

获取与指定Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。

返回值:

类型 说明
Promise<[KvStoreResultSet][]> Promise对象。返回与指定Query对象匹配的KvStoreResultSet对象。

示例:

letkvStore;try{letresultSet;letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success'); }).catch((err) = > {console.log('putBatch fail '+ err); });constquery =newdistributedData.Query(); query.deviceId('localDeviceId'); query.prefixKey("batch_test");console.log("GetResultSet "+ query.getSqlLike()); kvStore.getResultSet(query).then((result) = > {console.log('getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('getResultSet failed: '+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(deviceId: string, query: Query, callback: AsyncCallback): void

获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用callback异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string KvStoreResultSet对象所属的设备ID。
query [Query] 表示查询对象。
callback AsyncCallback<[KvStoreResultSet][]> 回调函数。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。

示例:

letkvStore;try{letresultSet;letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries,asyncfunction(err, data){console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getResultSet('localDeviceId', query,asyncfunction(err, result){console.log('getResultSet succeed.'); resultSet = result; kvStore.closeResultSet(resultSet,function(err, data){console.log('closeResultSet success'); }) }); }); }catch(e) {console.log('GetResultSet e '+ e); }

getResultSet8+

getResultSet(deviceId: string, query: Query): Promise

获取与指定设备ID和Query对象匹配的KvStoreResultSet对象,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string KvStoreResultSet对象所属的设备ID。
query [Query] 表示查询对象。

返回值:

类型 说明
Promise<[KvStoreResultSet][]> Promise对象。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。

示例:

letkvStore;try{letresultSet;letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.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)); });constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getResultSet('localDeviceId', query).then((result) = > {console.log('GetResultSet getResultSet succeed.'); resultSet = result; }).catch((err) = > {console.log('GetResultSet getResultSet failed: '+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

关闭由[DeviceKVStore.getResultSet]返回的KvStoreResultSet对象,使用callback异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
resultSet [KvStoreResultSet] 指示要关闭的KvStoreResultSet对象。
callback AsyncCallback 回调函数。

示例:

letkvStore;try{console.log('CloseResultSet success');letresultSet =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

关闭由[DeviceKVStore.getResultSet]返回的KvStoreResultSet对象,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
resultSet [KvStoreResultSet] 指示要关闭的KvStoreResultSet对象。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;try{console.log('CloseResultSet success');letresultSet =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异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。
callback AsyncCallback 回调函数,返回与指定Query对象匹配的结果数。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries,asyncfunction(err, data){console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); query.deviceId('localDeviceId'); kvStore.getResultSize(query,asyncfunction(err, resultSize){console.log('getResultSet succeed.'); }); }); }catch(e) {console.log('GetResultSize e '+ e); }

[](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md#getresultsize8-3)getResultSize8+

getResultSize(query: Query): Promise

获取与指定Query对象匹配的结果数,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
query [Query] 表示查询对象。

返回值:

类型 说明
Promise Promise对象。返回与指定Query对象匹配的结果数。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success'); }).catch((err) = > {console.log('putBatch fail '+JSON.stringify(err)); });constquery =newdistributedData.Query(); query.prefixKey("batch_test"); query.deviceId('localDeviceId'); kvStore.getResultSize(query).then((resultSize) = > {console.log('getResultSet succeed.'); }).catch((err) = > {console.log('getResultSet failed: '+JSON.stringify(err)); }); }catch(e) {console.log('GetResultSize e '+ e); }

getResultSize8+

getResultSize(deviceId: string, query: Query, callback: AsyncCallback): void;

获取与指定设备ID和Query对象匹配的结果数,使用callback异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string KvStoreResultSet对象所属的设备ID。
query [Query] 表示查询对象。
callback AsyncCallback 回调函数。返回与指定设备ID和Query对象匹配的结果数。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries,asyncfunction(err, data){console.log('putBatch success');constquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getResultSize('localDeviceId', query,asyncfunction(err, resultSize){console.log('getResultSet succeed.'); }); }); }catch(e) {console.log('GetResultSize e '+ e); }

getResultSize8+

getResultSize(deviceId: string, query: Query): Promise

获取与指定设备ID和Query对象匹配的结果数,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string KvStoreResultSet对象所属的设备ID。
query [Query] 表示查询对象。

返回值:

类型 说明
Promise Promise对象。返回与指定设备ID和Query对象匹配的结果数。

示例:

letkvStore;try{letentries = [];for(vari =0; i <10; i++) {varkey ='batch_test_string_key';varentry = {key: key + i,value: {type: distributedData.ValueType.STRING,value:'batch_test_string_value'} } entries.push(entry); } kvStore.putBatch(entries).then(async(err) = > {console.log('putBatch success'); }).catch((err) = > {console.log('putBatch fail '+JSON.stringify(err)); });varquery =newdistributedData.Query(); query.prefixKey("batch_test"); kvStore.getResultSize('localDeviceId', query).then((resultSize) = > {console.log('getResultSet succeed.'); }).catch((err) = > {console.log('getResultSet failed: '+JSON.stringify(err)); }); }catch(e) {console.log('GetResultSize e '+ e); }

removeDeviceData8+

removeDeviceData(deviceId: string, callback: AsyncCallback): void

从当前数据库中删除指定设备的数据,使用callback异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 标识要删除其数据的设备。
callback AsyncCallback 回调函数。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string';constVALUE_TEST_STRING_ELEMENT ='value-string-001';try{ kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT,asyncfunction(err,data){console.log('RemoveDeviceData put success');constdeviceid ='no_exist_device_id'; kvStore.removeDeviceData(deviceid,asyncfunction(err,data){if(err ==undefined) {console.log('removeDeviceData success'); }else{console.log('removeDeviceData fail'); kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT,asyncfunction(err,data){console.log('RemoveDeviceData get success'); }); } }); }); }catch(e) {console.log('RemoveDeviceData e '+ e); }

removeDeviceData8+

removeDeviceData(deviceId: string): Promise

从当前数据库中删除指定设备的数据,使用Promise异步回调。

系统能力:SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

参数:

参数名 参数类型 必填 说明
deviceId string 标识要删除其数据的设备。

返回值:

类型 说明
Promise 无返回结果的Promise对象。

示例:

letkvStore;constKEY_TEST_STRING_ELEMENT ='key_test_string';constVALUE_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)); });constdeviceid ='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); }

sync8+

sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void

在手动同步方式下,触发数据库同步。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述]。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC。

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

参数:

参数名 参数类型 必填 说明
deviceIdList string[] 需要同步DeviceKvStore数据库的设备ID列表。
mode [SyncMode] 同步模式。
allowedDelayMs number 可选参数,允许延时时间,单位:ms(毫秒)。

示例:

letkvStore;constKEY_TEST_SYNC_ELEMENT ='key_test_sync';constVALUE_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');constdevices = ['deviceList'];constmode = distributedData.SyncMode.PULL_ONLY; kvStore.sync(devices, mode); }); }catch(e) {console.log('Sync e'+ e); }

on('syncComplete')8+

on(event: 'syncComplete', syncCallback: Callback>): void

订阅同步完成事件回调通知。

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

参数:

参数名 参数类型 必填 说明
event string 订阅的事件名,固定为'syncComplete',表示同步完成事件。
syncCallback Callback> 回调函数。用于向调用方发送同步结果的回调。

示例:

letkvStore;constKEY_TEST_FLOAT_ELEMENT ='key_test_float';constVALUE_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); }

off('syncComplete')8+

off(event: 'syncComplete', syncCallback?: Callback>): void

取消订阅同步完成事件回调通知,该方法为同步方法。

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

参数:

参数名 参数类型 必填 说明
event string 取消订阅的事件名,固定为'syncComplete',表示同步完成事件。
syncCallback Callback> 回调函数。用于向调用方发送同步结果的回调。HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿
搜狗高速浏览器截图20240326151344.png

示例:

letkvStore;try{constfunc =function(data){console.log('syncComplete '+ data) }; kvStore.on('syncComplete', func); kvStore.off('syncComplete', func); }catch(e) {console.log('syncComplete e '+ e); }

SyncMode

同步模式枚举。

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

名称 说明
PULL_ONLY 0 表示只能从远端拉取数据到本端。
PUSH_ONLY 1 表示只能从本端推送数据到远端。
PUSH_PULL 2 表示从本端推送数据到远端,然后从远端拉取数据到本端。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8153

    浏览量

    149671
  • 数据管理
    +关注

    关注

    1

    文章

    276

    浏览量

    19529
  • 分布式
    +关注

    关注

    1

    文章

    809

    浏览量

    74363
  • 鸿蒙
    +关注

    关注

    56

    文章

    2261

    浏览量

    42433
收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发实例:【分布式数据管理

    eTS中 分布式 数据管理的使用,包括KVManager对象实例的创建和KVStore 数据流转的使用。
    的头像 发表于04-11 09:57 739次阅读
    HarmonyOS<b class='flag-5'>开发</b>实例:【<b class='flag-5'>分布式</b><b class='flag-5'>数据管理</b>】

    基于Openharmony轻量级操作系统的分布式数据管理开发案例

    实验内容本例程演示如何在小凌派-RK2206 开发板上使用OpenHarmony轻量级操作系统进行KvStore(即 分布式 数据管理数据读写。例程:(1)创建两个线程,一个负责写入KvS
    的头像 发表于08-07 08:23 498次阅读
    基于Openharmony轻量级操作系统的<b class='flag-5'>分布式</b><b class='flag-5'>数据管理</b><b class='flag-5'>开发</b>案例

    数据管理功能详解

    设计和 数据标准化的同时,进一步实现行业数字化互通、产业智能化互联。浩辰3D软件作为创新研发类工业软件,不仅在智能设计和创新研发方面有着独特的优势,在 数据管理方面更是独具匠心。浩辰3D软件可以在不使用 数据
    发表于11-03 15:32

    HarmonyOS分布式数据库,为啥这么牛?

    开发者无需关注索引引擎实现;业务通过一套 接口调用,就可以建立起应用内的索引,同时系统还具备强大的搜索服务,提供了丰富的检索 接口。 03 出色的性能表现 除了实现基础功能,HarmonyOS
    发表于11-19 15:38

    如何通过基于云的数据管理技术实现分布式设备的态势感知?

    如何通过基于云的 数据管理技术实现 分布式设备的态势感知?
    发表于05-25 06:56

    OpenHarmony标准设备应用开发(三)——分布式数据管理

    /js-apis-distributed- data.md 数据 分布式运作示意图,如下所示。实现步骤: 分布式 数据管理依赖 @
    发表于04-07 18:48

    【学习打卡】OpenHarmony的分布式数据管理介绍

    使用它来做出更明智的决策,如果一个系统缺乏适当的 数据管理,那就可能会导致 数据孤岛、 数据集之间不一致,甚至 数据本身存在错误。有效的 分布式
    发表于07-15 15:49

    HarmonyOS数据管理与应用数据持久化(一)

    。 运作机制 数据管理模块包括用户首选项、键值型 数据管理、关系型 数据管理分布式 数据对象和跨应用 数据管理
    发表于11-01 16:27

    工业现场数据管理| 什么是工业现场数据管理

    数据管理,以传输层/云作为界限,将其以下的所有南侧的车间、工厂、控制站点等工业现场封装成一个有序的“黑盒子”,并向外提供标准的通讯、 数据和服务 接口,便于各类平台、应用或云系统与工业现场进行 数据
    的头像 发表于04-28 19:08 2087次阅读

    工业现场数据管理—什么是工业现场数据管理

    工业现场 数据管理,以“ 数据”为核心关注点,除了着重解决各类工业现场 数据的获取、清洗、预处理等 数据初始化问题之外,还包括对工业现场 数据的安全
    的头像 发表于12-25 17:51 892次阅读

    HarmonyOS分布式数据管理三大核心技术是什么?

    随着华为官方公布——将于 2021 年 4 月开放首批升级 鸿蒙系统,预计届时将会涌现一大批 鸿蒙学习者,那么你对 HarmonyOS 分布式 数据管理三大核心技术有多少了解呢? 这三大技术
    的头像 发表于03-14 10:54 5229次阅读

    分享一个有趣的鸿蒙分布式小游戏

    MainAbilitySlice 里面申请 分布式 数据管理 ohos.permission.DISTRIBUTED_DATASYNC 允许
    的头像 发表于11-01 14:29 2371次阅读
    分享一个有趣的<b class='flag-5'>鸿蒙</b><b class='flag-5'>分布式</b>小游戏

    如何通过分布式数据管理实现多台设备间的数据同步更新

    OpenHarmony 中如何实现音乐播放,显示动画,转场动画(页面间转场)等功能。本章是 OpenHarmony 标准设备应用 开发的第三篇文章,将会在前面两章的基础上给大家讲解 分布式 数据管理在多台设备间,当
    的头像 发表于02-25 11:47 3331次阅读
    如何通过<b class='flag-5'>分布式</b><b class='flag-5'>数据管理</b>实现多台设备间的<b class='flag-5'>数据</b>同步更新

    储能系统数据管理与状态监测平台

    加工电池储能系统 数据管理与状态监测平台,支持不低于80MW 分布式储能装置的信息采集和处理,支持与 分布式储能装置以及上级监控中心的通信,实现 分布式储能系统
    发表于04-13 10:39 1次下载
    储能系统<b class='flag-5'>数据管理</b>与状态监测平台

    鸿蒙开发接口数据管理:【@ohos.data.distributedDataObject (分布式数据对象)】

    本模块提供 管理基本 数据对象的相关能力,包括创建、查询、删除、修改、订阅等;同时支持相同应用多设备间的 分布式 数据对象协同能力。
    的头像 发表于06-07 17:51 1234次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>接口</b><b class='flag-5'>数据管理</b>:【@<b class='flag-5'>ohos.data</b>.distributedDataObject (<b class='flag-5'>分布式</b><b class='flag-5'>数据</b>对象)】