开源鸿蒙 Distributed Data Management

2022-08-09 浏览 (793)

Distributed Data Management

The distributed data management module implements collaboration between databases of different devices for applications. The APIs provided by distributed data management can be used to save data to distributed databases and perform operations such as adding, deleting, modifying, querying, and synchronizing data in distributed databases.

This module provides the following functions:

  • KVManager: provides a KVManager instance to manage key-value (KV) stores.
  • KvStoreResultSet8+: provides methods to obtain the KV store result set and query or move the data read position.
  • Query8+: provides methods to query data from the database through a Query instance by using predicates.
  • KVStore: provides methods to add data, delete data, and observe data changes and data synchronization through a KVStore instance.
  • SingleKVStore: provides methods to query and synchronize data in a single KV store. This class inherits from KVStore, and data is not distinguished by device.
  • DeviceKVStore8+ : provides methods to query and synchronize data in a device KV store. This class inherits from KVStore, and data is distinguished by device.

NOTE

The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version.

Modules to Import

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

distributedData.createKVManager

createKVManager(config: KVManagerConfig, callback: AsyncCallback<KVManager>): void

Creates a KVManager instance to manage KV stores. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
configKVManagerConfigYesConfiguration of the KVManager instance, including the bundle name and user information of the caller.
callbackAsyncCallback<KVManager>YesCallback invoked to return the KVManager instance created.

Example

Stage model:

import AbilityStage from '@ohos.application.Ability'
let kvManager;
export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    console.log("MyAbilityStage onCreate")
    let context = this.context
    const kvManagerConfig = {
      context: context,
      bundleName: 'com.example.datamanagertest',
      userInfo: {
        userId: '0',
        userType: distributedData.UserType.SAME_USER_ID
      }
    }
    distributedData.createKVManager(kvManagerConfig, function (err, manager) {
      if (err) {
        console.log("Failed to create KVManager: " + JSON.stringify(err));
        return;
      }
      console.log("Created KVManager");
      kvManager = manager;
    });
  }
}

FA model:

import AbilityStage from '@ohos.application.Ability'
let kvManager;
export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    console.log("MyAbilityStage onCreate")
    let context = this.context
    const kvManagerConfig = {
      context: context.getApplicationContext(),
      bundleName: 'com.example.datamanagertest',
      userInfo: {
        userId: '0',
        userType: distributedData.UserType.SAME_USER_ID
      }
    }
    distributedData.createKVManager(kvManagerConfig, function (err, manager) {
      if (err) {
        console.log("Failed to create KVManager: " + JSON.stringify(err));
        return;
      }
      console.log("Created KVManager");
      kvManager = manager;
    });
  }
}

distributedData.createKVManager

createKVManager(config: KVManagerConfig): Promise<KVManager>

Creates a KVManager instance to manage KV stores. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
configKVManagerConfigYesConfiguration of the KVManager instance, including the bundle name and user information of the caller.

Return value

TypeDescription
Promise<KVManager>Promise used to return the KVManager instance created.

Example

Stage model:

import AbilityStage from '@ohos.application.Ability'
let kvManager;
export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    console.log("MyAbilityStage onCreate")
    let context = this.context
    const kvManagerConfig = {
      context: context,
      bundleName: 'com.example.datamanagertest',
      userInfo: {
        userId: '0',
        userType: distributedData.UserType.SAME_USER_ID
      }
    }
    distributedData.createKVManager(kvManagerConfig, function (err, manager) {
      if (err) {
        console.log("Failed to create KVManager: " + JSON.stringify(err));
        return;
      }
      console.log("Created KVManager");
      kvManager = manager;
    });
  }
}

FA model:

import AbilityStage from '@ohos.application.Ability'
let kvManager;
export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    console.log("MyAbilityStage onCreate")
    let context = this.context
    const kvManagerConfig = {
      context: context.getApplicationContext(),
      bundleName: 'com.example.datamanagertest',
      userInfo: {
        userId: '0',
        userType: distributedData.UserType.SAME_USER_ID
      }
    }
    distributedData.createKVManager(kvManagerConfig, function (err, manager) {
      if (err) {
        console.log("Failed to create KVManager: " + JSON.stringify(err));
        return;
      }
      console.log("Created KVManager");
      kvManager = manager;
    });
  }
}

KVManagerConfig

Provides configuration of the KVManager object, including the bundle name and user information of the caller.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameTypeMandatoryDescription
context9+ContextYesApplication context.
For the application context of the FA model, see Context.
For the application context of the stage model, see Context.
userInfoUserInfoYesUser information.
bundleNamestringYesBundle name.

UserInfo

Defines user information.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameTypeMandatoryDescription
userIdstringYesUser ID.
userTypeUserTypeYesUser type.

UserType

Enumerates the user types.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameValueDescription
SAME_USER_ID0User who logs in to different devices using the same account.

KVManager

Creates a KVManager object to obtain KV store information. Before calling any method in KVManager, you must use createKVManager to create a KVManager object.

getKVStore

getKVStore<T extends KVStore>(storeId: string, options: Options, callback: AsyncCallback<T>): void

Creates and obtains a KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
storeIdstringYesUnique identifier of the KV store. The length cannot exceed MAX_STORE_ID_LENGTH.
optionsOptionsYesConfiguration of the KV store.
callbackAsyncCallback<T> , <T extends KVStore>YesCallback invoked to return the KV store created.

Example

let kvStore;
let kvManager;
try {
    const options = {
        createIfMissing : true,
        encrypt : false,
        backup : false,
        autoSync : true,
        kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
        securityLevel : distributedData.SecurityLevel.S2,
    };
    kvManager.getKVStore('storeId', options, function (err, store) {
        if (err) {
            console.log("getKVStore err: "  + JSON.stringify(err));
            return;
        }
        console.log("getKVStore success");
        kvStore = store;
    });
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}

getKVStore

getKVStore<T extends KVStore>(storeId: string, options: Options): Promise<T>

Creates and obtains a KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
storeIdstringYesUnique identifier of the KV store. The length cannot exceed MAX_STORE_ID_LENGTH.
optionsOptionsYesConfiguration of the KV store.

Return value

TypeDescription
Promise<T>, <T extends KVStore>Promise used to return the KV store created.

Example

let kvStore;
let kvManager;
try {
    const options = {
        createIfMissing : true,
        encrypt : false,
        backup : false,
        autoSync : true,
        kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
        securityLevel : distributedData.SecurityLevel.S2,
    };
    kvManager.getKVStore('storeId', options).then((store) => {
        console.log("getKVStore success");
        kvStore = store;
    }).catch((err) => {
        console.log("getKVStore err: "  + JSON.stringify(err));
    });
} catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}

closeKVStore8+

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

Closes a KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
appIdstringYesBundle name of the app that invokes the KV store.
storeIdstringYesUnique identifier of the KV store to close. The length cannot exceed MAX_STORE_ID_LENGTH.
kvStoreKVStoreYesKV store to close.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

let kvStore;
let kvManager;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
 }
 try {
    kvManager.getKVStore('storeId', options, async function (err, store) {
    console.log('getKVStore success');
    kvStore = store;
    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<void>

Closes a KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
appIdstringYesBundle name of the app that invokes the KV store.
storeIdstringYesUnique identifier of the KV store to close. The length cannot exceed MAX_STORE_ID_LENGTH.
kvStoreKVStoreYesKV store to close.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
 try {
    kvManager.getKVStore('storeId', options).then(async (store) => {
    console.log('getKVStore success');
    kvStore = store;
    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>): void

Deletes a KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
appIdstringYesBundle name of the app that invokes the KV store.
storeIdstringYesUnique identifier of the KV store to delete. The length cannot exceed MAX_STORE_ID_LENGTH.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
try {
    kvManager.getKVStore('store', options, async function (err, store) {
        console.log('getKVStore success');
        kvStore = store;
        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<void>

Deletes a KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
appIdstringYesBundle name of the app that invokes the KV store.
storeIdstringYesUnique identifier of the KV store to delete. The length cannot exceed MAX_STORE_ID_LENGTH.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvManager;
let kvStore;
const options = {
    createIfMissing : true,
    encrypt : false,
    backup : false,
    autoSync : true,
    kvStoreType : distributedData.KVStoreType.SINGLE_VERSION,
    schema : '',
    securityLevel : distributedData.SecurityLevel.S2,
}
try {
    kvManager.getKVStore('storeId', options).then(async (store) => {
        console.log('getKVStore success');
        kvStore = store;
        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<string[]>): void

Obtains the IDs of all KV stores that are created by getKVStore() and have not been deleted by deleteKVStore(). This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
appIdstringYesBundle name of the app that invokes the KV store.
callbackAsyncCallback<string[]>YesCallback used to return the KV store IDs obtained.

Example

let kvManager;
try {
    kvManager.getAllKVStoreId('appId', function (err, data) {
        console.log('GetAllKVStoreId success');
        console.log('GetAllKVStoreId size = ' + data.length);
    });
} catch (e) {
    console.log('GetAllKVStoreId e ' + e);
}

getAllKVStoreId8+

getAllKVStoreId(appId: string): Promise<string[]>

Obtains the IDs of all KV stores that are created by getKVStore() and have not been deleted by deleteKVStore(). This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
appIdstringYesBundle name of the app that invokes the KV store.

Return value

TypeDescription
Promise<string[]>Promise used to return the KV store IDs obtained.

Example

let kvManager;
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>): void

Subscribes to service status changes.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to subscribe to. The value is distributedDataServiceDie, which indicates service status changes.
deathCallbackCallback<void>YesCallback invoked to return service status changes.

Example

let kvManager;
try {
    
    console.log('KVManagerOn');
    const deathCallback = 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>): void

Unsubscribes from the service status changes.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to unsubscribe from. The value is distributedDataServiceDie, which indicates service status changes.
deathCallbackCallback<void>NoCallback used to return service status changes.

Example

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

Options

Provides KV store configuration.

NameTypeMandatoryDescription
createIfMissingbooleanNoWhether to create a KV store if no database file exists. By default, a KV store is created.
System capability: SystemCapability.DistributedDataManager.KVStore.Core
encryptbooleanNoWhether to encrypt database files. By default, database files are not encrypted.
System capability: SystemCapability.DistributedDataManager.KVStore.Core
backupbooleanNoWhether to back up database files. By default, database files are backed up.
System capability: SystemCapability.DistributedDataManager.KVStore.Core
autoSyncbooleanNoWhether database files are automatically synchronized. By default, database files are not automatically synchronized.
System capability: SystemCapability.DistributedDataManager.KVStore.Core
Required permissions: ohos.permission.DISTRIBUTED_DATASYNC
kvStoreTypeKVStoreTypeNoType of the KV store to create. By default, a device KV store is created. The device KV store stores data for multiple devices that collaborate with each other.
System capability: SystemCapability.DistributedDataManager.KVStore.Core
securityLevelSecurityLevelNoSecurity level of the KV store. By default, the security level is not set.
System capability: SystemCapability.DistributedDataManager.KVStore.Core
schema8+SchemaNoSchema used to define the values stored in a KV store.
System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

KVStoreType

Enumerates the KV store types.

NameValueDescription
DEVICE_COLLABORATION0Device KV store.
System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore
SINGLE_VERSION1Single KV store.
System capability: SystemCapability.DistributedDataManager.KVStore.Core
MULTI_VERSION2Multi-version KV store. This type is not supported currently.
System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

SecurityLevel

Enumerates the KV store security levels.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameValueDescription
NO_LEVEL0No security level is set for the KV store.
S01The KV store security level is public.
S12The KV store security level is low. If data leakage occurs, minor impact will be caused on the database. For example, a KV store that contains system data such as wallpapers.
S23The KV store security level is medium. If data leakage occurs, moderate impact will be caused on the database. For example, a KV store that contains information created by users or call records, such as audio or video clips.
S35The KV store security level is high. If data leakage occurs, major impact will be caused on the database. For example, a KV store that contains information such as user fitness, health, and location data.
S46The KV store security level is critical. If data leakage occurs, severe impact will be caused on the database. For example, a KV store that contains information such as authentication credentials and financial data.

Constants

Defines the KV store constants.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameValueDescription
MAX_KEY_LENGTH1024Maximum length of a key in the KV store, in bytes.
MAX_VALUE_LENGTH4194303Maximum length of a value in the KV store, in bytes.
MAX_KEY_LENGTH_DEVICE896Maximum length of a device key, in bytes.
MAX_STORE_ID_LENGTH128Maximum length of a KV store ID, in bytes.
MAX_QUERY_LENGTH512000Maximum query length, in bytes.
MAX_BATCH_SIZE128Maximum number of batch operations.

Schema8+

Defines the schema of a KV store. You can create a Schema object and place it in Options when creating or opening a KV store.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

NameTypeDescription
root8+FieldNodeJSON root object.
indexes8+Array<string>String array in JSON format.
mode8+numberSchema mode.
skip8+numberSize of a skip of the schema.

constructor8+

constructor()

A constructor used to create a Schema instance.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

FieldNode8+

Represents a Schema instance, which provides the methods for defining the values stored in a KV store.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

NameTypeDescription
nullable8+booleanWhether the database field can be null.
default8+stringDefault value of a FieldNode.
type8+numberValue of the data type corresponding to the specified node.

constructor8+

constructor(name: string)

A constructor used to create a FieldNode instance with a string field.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
namestringYesValue of FieldNode.

appendChild8+

appendChild(child: FieldNode): boolean

Appends a child node to this FieldNode.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
childFieldNodeYesChild node to append.

Return value

TypeDescription
booleanReturns true if the operation is successful; returns false otherwise.

Example

import ddm from '@ohos.data.distributedData';
try {
    let node = new ddm.FieldNode("root");
    let child1 = new ddm.FieldNode("child1");
    let child2 = new ddm.FieldNode("child2");
    let child3 = new ddm.FieldNode("child3");
    node.appendChild(child1);
    node.appendChild(child2);
    node.appendChild(child3);
    console.log("appendNode " + JSON.stringify(node));
    child1 = null;
    child2 = null;
    child3 = null;
    node = null;
} catch (e) {
    console.log("AppendChild " + e);
}

KvStoreResultSet8+

Provides methods to obtain the KV store result sets, and query and move the data read position.

Before calling any method in KvStoreResultSet, you must use getKVStore to obtain a KVStore object.

getCount8+

getCount(): number

Obtains the total number of rows in the result set.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
numberTotal number of rows obtained.

Example

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

getPosition8+

getPosition(): number

Obtains the current data read position (position from which data is read) in the result set.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
numberCurrent data read position obtained.

Example

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

moveToFirst8+

moveToFirst(): boolean

Moves the data read position to the first row. If the result set is empty, false will be returned.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
booleanReturns true if the operation is successful; returns false otherwise.

Example

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

moveToLast8+

moveToLast(): boolean

Moves the data read position to the last row. If the result set is empty, false will be returned.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
booleanReturns true if the operation is successful; returns false otherwise.

Example

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

moveToNext8+

moveToNext(): boolean

Moves the data read position to the next row. If the result set is empty, false will be returned.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
booleanReturns true if the operation is successful; returns false otherwise.

Example

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

moveToPrevious8+

moveToPrevious(): boolean

Moves the data read position to the previous row. If the result set is empty, false will be returned.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
booleanReturns true if the operation is successful; returns false otherwise.

Example

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

move8+

move(offset: number): boolean

Moves the data read position with the specified offset from the current position.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
offsetnumberYesOffset to move the data read position. A negative value means to move backward, and a positive value means to move forward.

Return value

TypeDescription
booleanReturns true if the operation is successful; returns false otherwise.

Example

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

moveToPosition8+

moveToPosition(position: number): boolean

Moves the data read position from 0 to an absolute position.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
positionnumberYesAbsolute position to move to.

Return value

TypeDescription
booleanReturns true if the operation is successful; returns false otherwise.

Example

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

isFirst8+

isFirst(): boolean

Checks whether the data read position is the first row.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
booleanReturns true if the first row is being read; returns false otherwise.

Example

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

isLast8+

isLast(): boolean

Checks whether the data read position is the last row.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
booleanReturns true if the last row is being read; returns false otherwise.

Example

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

isBeforeFirst8+

isBeforeFirst(): boolean

Checks whether the data read position is before the first row.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
booleanReturns true if the data read position is before the first row; returns false otherwise.

Example

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

isAfterLast8+

isAfterLast(): boolean

Checks whether the data read position is after the last row.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
booleanReturns true if the data read position is after the last row; returns false otherwise.

Example

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

getEntry8+

getEntry(): Entry

Obtains the KV pair from the current position.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
EntryKV pair obtained.

Example

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

Query8+

Provides methods to create a Query object, which defines different data query criteria.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

constructor8+

constructor()

A constructor used to create a Schema instance.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

reset8+

reset(): Query

Resets the Query object.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
QueryQuery object reset.

Example

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

equalTo8+

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

Creates a Query object to match the specified field whose value is equal to the given value.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valuenumber|string|booleanYesValue specified.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is not equal to the specified value.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valuenumber|string|booleanYesValue specified.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is greater than the specified value.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valuenumber|string|booleanYesValue specified.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is less than the specified value.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valuenumber|string|booleanYesValue specified.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is greater than or equal to the specified value.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valuenumber|string|booleanYesValue specified.

Return value

TypeDescription
QueryQuery object created.

Example

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

lessThanOrEqualTo8+

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

Creates a Query object to match the specified field whose value is less than or equal to the specified value.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valuenumber|string|booleanYesValue specified.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is null.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is within the specified list of numbers.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valueListnumber[]YesList of numbers.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is within the specified list of strings.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valueListstring[]YesList of strings.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = new distributedData.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

Creates a Query object to match the specified field whose value is not within the specified list of numbers.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valueListnumber[]YesList of numbers.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is not within the specified list of strings.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valueListstring[]YesList of strings.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = new distributedData.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

Creates a Query object to match the specified field whose value is similar to the specified string.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valuestringYesString specified.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object to match the specified field whose value is not similar to the specified string.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.
valuestringYesString specified.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object with the AND condition.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
QueryQuery object Created.

Example

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

or8+

or(): Query

Creates a Query object with the OR condition.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
QueryQuery object Created.

Example

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

orderByAsc8+

orderByAsc(field: string): Query

Creates a Query object to sort the query results in ascending order.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.

Return value

TypeDescription
QueryQuery object created.

Example

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

orderByDesc8+

orderByDesc(field: string): Query

Creates a Query object to sort the query results in descending order.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.

Return value

TypeDescription
QueryQuery object created.

Example

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

limit8+

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

Creates a Query object to specify the number of results and where to start.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
totalnumberYesNumber of results to query.
offsetnumberYesStart position for query.

Return value

TypeDescription
QueryQuery object created.

Example

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

isNotNull8+

isNotNull(field: string): Query

Creates a Query object to match the specified field whose value is not null.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
fieIdstringYesField to match. It cannot contain '^'.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object for a query condition group with a left parenthesis.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
QueryQuery object created.

Example

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

endGroup8+

endGroup(): Query

Creates a Query object for a query condition group with a right parenthesis.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
QueryQuery object created.

Example

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

prefixKey8+

prefixKey(prefix: string): Query

Creates a Query object with a specified key prefix.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
prefixstringYesKey prefix.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object with an index preferentially used for query.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
indexstringYesIndex preferentially used for query.

Return value

TypeDescription
QueryQuery object created.

Example

try {
    let query = 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

Creates a Query object with the device ID as the key prefix.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
deviceIdstringYesDevice ID.

Return value

TypeDescription
QueryQuery object created.

Example

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

getSqlLike8+

getSqlLike():string

Obtains the query statement of the Query object.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
stringReturns the query statement obtained.

Example

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

KVStore

Provides methods to manage data in a KV store, for example, adding or deleting data and subscribing to data changes or completion of data synchronization.

Before calling any method in KVStore, you must use getKVStore to obtain a KVStore object.

put

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

Adds a KV pair of the specified type to this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keystringYesKey of the KV pair to add. It cannot be empty, and the length cannot exceed MAX_KEY_LENGTH.
valueUint8Array | string | number | booleanYesValue of the KV pair to add. The value type can be Uint8Array, number, string, or boolean. A value of the Uint8Array or string type cannot exceed MAX_VALUE_LENGTH.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) {
        if (err != undefined) {
            console.log("put err: " + JSON.stringify(err));
            return;
        }
        console.log("put success");
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}

put

put(key: string, value: Uint8Array | string | number | boolean): Promise<void>

Adds a KV pair of the specified type to this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keystringYesKey of the KV pair to add. It cannot be empty, and the length cannot exceed MAX_KEY_LENGTH.
valueUint8Array | string | number | booleanYesValue of the KV pair to add. The value type can be Uint8Array, number, string, or boolean. A value of the Uint8Array or string type cannot exceed MAX_VALUE_LENGTH.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => {
        console.log("put success: " + JSON.stringify(data));
    }).catch((err) => {
        console.log("put err: " + JSON.stringify(err));
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}

delete

delete(key: string, callback: AsyncCallback<void>): void

Deletes a KV pair from this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keystringYesKey of the KV pair to delete. It cannot be empty, and the length cannot exceed MAX_KEY_LENGTH.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) {
        if (err != undefined) {
            console.log("put err: " + JSON.stringify(err));
            return;
        }
        console.log("put success");
        kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err,data) {
            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<void>

Deletes a KV pair from this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keystringYesKey of the KV pair to delete. It cannot be empty, and the length cannot exceed MAX_KEY_LENGTH.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => {
        console.log("put success: " + JSON.stringify(data));
        kvStore.delete(KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log("delete success");
        }).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);
}

delete9+

delete(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<void>)

Deletes KV pairs that meet the specified predicates. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
predicatesDataSharePredicatesYesConditions for deleting data. If this parameter is null, define the processing logic.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

import dataSharePredicates from '@ohos.data.dataSharePredicates';
let kvStore;
try {
	let predicates = new dataSharePredicates.DataSharePredicates();
	kvStore.delete(predicates, function (err, data) {
		if (err == undefined) {
			console.log('delete success');
		} else {
			console.log('delete fail' + err);
		}
    });  
} catch (e) {
	console.log('An unexpected error occurred. Error:' + e);
}

delete9+

delete(predicates: dataSharePredicates.DataSharePredicates): Promise<void>

Deletes KV pairs that meet the specified predicates. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
predicatesDataSharePredicatesYesConditions for deleting data. If this parameter is null, define the processing logic.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

import dataSharePredicates from '@ohos.data.dataSharePredicates';
let kvStore;
try {
	let predicates = new dataSharePredicates.DataSharePredicates();
	let arr = ["name"];
	predicates.inKeys(arr);
	kvStore.put("name", "bob").then((data) => {
		console.log('put success' + JSON.stringify(data));
		kvStore.delete(predicates).then((data) => {
			console.log('delete success');
		}).catch((err) => {
			console.log('delete fail' + JSON.stringify(err));
		});
	}) .catch((err) => {
		console.log(' put fail' + err);
	});
}catch (e) {
	console.log("An unexpected error occurred. Error:" + e);
}

on('dataChange')

on(event: 'dataChange', type: SubscribeType, listener: Callback<ChangeNotification>): void

Subscribes to data change notifications of the specified type.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to subscribe to. The value is dataChange, which indicates data changes.
typeSubscribeTypeYesType of data changes.
listenerCallback<ChangeNotification>YesCallback used to return the data changes.

Example

let kvStore;
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<Array<[string, number]>>): void

Subscribes to data synchronization complete events.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to subscribe to. The value is syncComplete, which indicates completion of a data synchronization.
syncCallbackCallback<Array<[string, number]>>YesCallback used to return the data synchronization result.

Example

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

off('dataChange')8+

off(event:'dataChange', listener?: Callback<ChangeNotification>): void

Unsubscribes from data change notifications.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to unsubscribe from. The value is dataChange, which indicates data changes.
listenerCallback<ChangeNotification>NoCallback used to return the data changes.

Example

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

off('syncComplete')9+

off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void

Unsubscribes from data change events. This API uses a synchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to unsubscribe from. The value is syncComplete, which indicates completion of a data synchronization.
syncCallbackCallback<Array<[string, number]>>NoCallback used to return the synchronization result.

Example

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

putBatch8+

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

Inserts KV pairs in batches to this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
entriesEntry[]YesKV pairs to insert in batches.
callbackAsyncallback<void>YesCallback used to return the result.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        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));
}

putBatch8+

putBatch(entries: Entry[]): Promise<void>

Inserts KV pairs in batches to this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
entriesEntry[]YesKV pairs to insert in batches.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        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));
}

putBatch9+

putBatch(value: Array<ValuesBucket>, callback: AsyncCallback<void>): void

Writes data to this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
valueArray<ValuesBucket>YesData to write.
callbackAsyncallback<void>YesCallback used to return the result.

Example

let kvStore;
try {
    let v8Arr = [];
    let arr = new Uint8Array([4,5,6,7]);
    let vb1 = {key : "name_1", value : 32}
    let vb2 = {key : "name_2", value : arr};
    let vb3 = {key : "name_3", value : "lisi"};

    v8Arr.push(vb1);
    v8Arr.push(vb2);
    v8Arr.push(vb3);
    kvStore.putBatch(v8Arr, async function (err,data) {
                console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('putBatch e ' + JSON.stringify(e));
}

putBatch9+

putBatch(value: Array<ValuesBucket>): Promise<void>

Writes data of the valuesbucket type to this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
valueArray<ValuesBucket>YesData to write.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

let kvStore;
try {
    let v8Arr = [];
    let arr = new Uint8Array([4,5,6,7]);
    let vb1 = {key : "name_1", value : 32}
    let vb2 = {key : "name_2", value : arr};
    let vb3 = {key : "name_3", value : "lisi"};

    v8Arr.push(vb1);
    v8Arr.push(vb2);
    v8Arr.push(vb3);
    kvStore.putBatch(v8Arr).then(async (err) => {
        console.log('putBatch success');
    }).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>): void

Deletes KV pairs in batches from this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keysstring[]YesKV pairs to delete in batches.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

deleteBatch8+

deleteBatch(keys: string[]): Promise<void>

Deletes KV pairs in batches from this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keysstring[]YesKV pairs to delete in batches.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
try {
    let entries = [];
    let keys = [];
    for (var i = 0; i < 5; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
        keys.push(key + i);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        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>): void

Starts the transaction in this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

startTransaction8+

startTransaction(): Promise<void>

Starts the transaction in this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

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

commit8+

commit(callback: AsyncCallback<void>): void

Commits the transaction in this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

commit8+

commit(): Promise<void>

Commits the transaction in this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

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

rollback8+

rollback(callback: AsyncCallback<void>): void

Rolls back the transaction in this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

rollback8+

rollback(): Promise<void>

Rolls back the transaction in this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

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

enableSync8+

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

Sets data synchronization, which can be enabled or disabled. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
enabledbooleanYesWhether to enable data synchronization. The value true means to enable data synchronization, and false means the opposite.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

enableSync8+

enableSync(enabled: boolean): Promise<void>

Sets data synchronization, which can be enabled or disabled. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
enabledbooleanYesWhether to enable data synchronization. The value true means to enable data synchronization, and false means the opposite.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

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

setSyncRange8+

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

Sets the data synchronization range. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
localLabelsstring[]YesSynchronization labels set for the local device.
remoteSupportLabelsstring[]YesSynchronization labels set for remote devices.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

setSyncRange8+

setSyncRange(localLabels: string[], remoteSupportLabels: string[]): Promise<void>

Sets the data synchronization range. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
localLabelsstring[]YesSynchronization labels set for the local device.
remoteSupportLabelsstring[]YesSynchronization labels set for remote devices.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

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

SubscribeType

Enumerates the subscription types.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameValueDescription
SUBSCRIBE_TYPE_LOCAL0Local data changes.
SUBSCRIBE_TYPE_REMOTE1Remote data changes.
SUBSCRIBE_TYPE_ALL2Local and remote data changes.

ChangeNotification

Defines the content of data change notifications, including inserted data, updated data, deleted data, and device ID.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameTypeReadableWritableDescription
insertEntriesEntry[]YesYesData inserted.
updateEntriesEntry[]YesYesData updated.
deleteEntriesEntry[]YesYesData deleted.
deviceIdstringYesYesUUID of the device.

Entry

Defines the KV pairs stored in the KV store.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameTypeReadableWritableDescription
keystringYesYesKey of the KV pair stored in the KV store.
valueValueYesYesValue of the KV pair stored in the KV store.

Value

Defines the value object in a KV store.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameTypeReadableWritableDescription
typeValueTypeYesYesType of the value.
valueUint8Array | string | number | booleanYesYesValue of the KV pair stored in the KV store.

ValueType

Enumerates the data types.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameValueDescription
STRING0String.
INTEGER1Integer.
FLOAT2Float (single-precision floating point).
BYTE_ARRAY3Byte array.
BOOLEAN4Boolean.
DOUBLE5Double (double-precision floating point).

SingleKVStore

Provides methods to query and synchronize data in a single KV store. This class inherits from KVStore.

Data is not distinguished by device in a single KV store. The data written to different devices using the same key will be overwritten. For example, a single KV store can be used to synchronize a user's calendar and contact data between different devices.

Before calling any method in SingleKVStore, you must use getKVStore to obtain a SingleKVStore instance.

get

get(key: string, callback: AsyncCallback<Uint8Array | string | boolean | number>): void

Obtains the value of the specified key. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keystringYesKey of the value to obtain. It cannot be empty, and the length cannot exceed MAX_KEY_LENGTH.
callbackAsyncCallback<Uint8Array | string | boolean | number>)YesCallback invoked to return the value obtained.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err,data) {
        if (err != undefined) {
            console.log("put err: " + JSON.stringify(err));
            return;
        }
        console.log("put success");
        kvStore.get(KEY_TEST_STRING_ELEMENT, function (err,data) {
            console.log("get success data: " + data);
        });
    });
}catch (e) {
    console.log("An unexpected error occurred. Error:" + e);
}

get

get(key: string): Promise<Uint8Array | string | boolean | number>

Obtains the value of the specified key. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keystringYesKey of the value to obtain. It cannot be empty, and the length cannot exceed MAX_KEY_LENGTH.

Return value

TypeDescription
Promise<Uint8Array | string | boolean | number>Promise used to return the value obtained.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((data) => {
        console.log("put success: " + JSON.stringify(data));
        kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log("get success data: " + data);
        }).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<Entry[]>): void

Obtains all KV pairs that match the specified key prefix. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keyPrefixstringYesKey prefix to match.
callbackAsyncCallback<Entry[]>YesCallback invoked to return the KV pairs obtained.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_number_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.INTEGER,
                value : 222
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (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<Entry[]>

Obtains all KV pairs that match the specified key prefix. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keyPrefixstringYesKey prefix to match.

Return value

TypeDescription
Promise<Entry[]>Promise used to return the KV pairs obtained.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + 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);
}

getEntries8+

getEntries(query: Query, callback: AsyncCallback<Entry[]>): void

Obtains the KV pairs that match the specified Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
queryQueryYesKey prefix to match.
callbackAsyncCallback<Entry[]>YesCallback used to return the KV pairs obtained.

Example

let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        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<Entry[]>

Obtains the KV pairs that match the specified Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<Entry[]>Promise used to return the KV pairs obtained.

Example

let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        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<KvStoreResultSet>): void

Obtains the result set with the specified prefix. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keyPrefixstringYesKey prefix to match.
callbackAsyncCallback<KvStoreResultSet>YesCallback invoked to return the result set obtained.

Example

let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('GetResultSet putBatch success');
        kvStore.getResultSet('batch_test_string_key', async function (err, result) {
            console.log('GetResultSet getResultSet 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<KvStoreResultSet>

Obtains the result set with the specified prefix. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
keyPrefixstringYesKey prefix to match.

Return value

TypeDescription
Promise<KvStoreResultSet>Promise used to return the result set obtained.

Example

let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        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<KvStoreResultSet>): void

Obtains a KvStoreResultSet object that matches the specified Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.
callbackAsyncCallback<KvStoreResultSet>YesCallback invoked to return the KvStoreResultSet object obtained.

Example

let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSet(query, async function (err, result) {
            console.log('getResultSet succeed.');
            resultSet = result;
        });
    });
} catch(e) {
    console.log('GetResultSet e ' + e);
}

getResultSet8+

getResultSet(query: Query): Promise<KvStoreResultSet>

Obtains a KvStoreResultSet object that matches the specified Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<KvStoreResultSet>Promise used to return the KvStoreResultSet object obtained.

Example

let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    kvStore.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);
}

getResultSet9+

getResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<KvStoreResultSet>): void

Obtains a KvStoreResultSet object that matches the specified DataSharePredicates object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
predicatesDataSharePredicatesYesDataSharePredicates object to match. If this parameter is null, define the processing logic.
callbackAsyncCallback<KvStoreResultSet>YesCallback invoked to return the KvStoreResultSet object obtained.

Example

import dataSharePredicates from '@ohos.data.dataSharePredicates';
let kvStore;
try {
    let resultSet;
    let predicates = new dataSharePredicates.DataSharePredicates();
    predicates.prefixKey("batch_test_string_key");
    kvStore.getResultSet(predicates, async function (err, result) {
    console.log(' GetResultSet success');
    resultSet = result;
    kvStore.closeResultSet(resultSet, function (err, data) {
        console.log(' closeResultSet success');
        })
    });
}catch(e) {
    console.log('An unexpected error occurred. Error:' + e);
}

getResultSet9+

getResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise<KvStoreResultSet>

Obtains a KvStoreResultSet object that matches the specified DataSharePredicates object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
predicatesDataSharePredicatesYesDataSharePredicates object to match. If this parameter is null, define the processing logic.

Return value

TypeDescription
Promise<KvStoreResultSet>Promise used to return the KvStoreResultSet object obtained.

Example

import dataSharePredicates from '@ohos.data.dataSharePredicates';
let kvStore;
try {
	let resultSet;
    let predicates =  new dataSharePredicates.DataSharePredicates();
    predicates.prefixKey("batch_test_string_key");
    kvStore.getResultSet(predicates) .then((result) => {
        console.log(' GetResultSet success');
        resultSet = result;
        kvStore.closeResultSet(resultSet, function (err, data) {
            console.log(' closeResultSet success');
        })
    });
}catch(e) {
	console.log('An unexpected error occurred. Error:' + e);
}

closeResultSet8+

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

Closes the KvStoreResultSet object obtained by SingleKvStore.getResultSet. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
resultSetKvStoreResultSetYesKvStoreResultSet object to close.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

let kvStore;
try {
    let resultSet = null;
    kvStore.closeResultSet(resultSet, function (err, data) {
        if (err == undefined) {
            console.log('closeResultSet success');
        } else {
            console.log('closeResultSet fail');
        }
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}

closeResultSet8+

closeResultSet(resultSet: KvStoreResultSet): Promise<void>

Closes the KvStoreResultSet object obtained by SingleKvStore.getResultSet. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
resultSetKvStoreResultSetYesKvStoreResultSet object to close.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
try {
    let resultSet = null;
    kvStore.closeResultSet(resultSet).then(() => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}

getResultSize8+

getResultSize(query: Query, callback: AsyncCallback<number>): void

Obtains the number of results that matches the specified Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.
callbackAsyncCallback<number>YesCallback invoked to return the number of results obtained.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSize(query, async function (err, resultSize) {
            console.log('getResultSet succeed.');
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}

getResultSize8+

getResultSize(query: Query): Promise<number>

Obtains the number of results that matches the specified Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<number>Promise used to return the number of results obtained.

Example

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

removeDeviceData8+

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

Deletes data of a device. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

removeDeviceData8+

removeDeviceData(deviceId: string): Promise<void>

Deletes data of a device. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((err) => {
        console.log('removeDeviceData put success');
    }).catch((err) => {
        console.log('put fail ' + JSON.stringify(err));
    });
    const deviceid = 'no_exist_device_id';
    kvStore.removeDeviceData(deviceid).then((err) => {
        console.log('removeDeviceData success');
    }).catch((err) => {
        console.log('removeDeviceData fail ' + JSON.stringify(err));
    });
    kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
        console.log('get success data:' + data);
    }).catch((err) => {
        console.log('RemoveDeviceData get fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}

on('syncComplete')8+

on(event: 'syncComplete', syncCallback: Callback<Array<[string, number]>>): void

Subscribes to the data synchronization complete events.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to subscribe to. The value is syncComplete, which indicates completion of a data synchronization.
syncCallbackCallback<Array<[string, number]>>YesCallback called to return the synchronization result.

Example

let kvStore;
const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
const VALUE_TEST_FLOAT_ELEMENT = 321.12;
try {
    kvStore.on('syncComplete', function (data) {
        console.log('syncComplete ' + data)
    });
    kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
        console.log('syncComplete put success');
    }).catch((error) => {
        console.log('syncComplete put fail ' + error);
    });
}catch(e) {
    console.log('syncComplete put e ' + e);
}

off('syncComplete')8+

off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void

Unsubscribes from the data synchronization complete events.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to unsubscribe from. The value is syncComplete, which indicates completion of a data synchronization.
syncCallbackCallback<Array<[string, number]>>NoCallback used to return the synchronization result.

Example

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

on('dataChange')9+

on(event: 'dataChange', type: SubscribeType, listener: Callback<ChangeNotification>): void

Subscribes to data changes of the specified type. This API returns the result synchronously.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to subscribe to. The value is dataChange, which indicates data changes.
typeSubscribeTypeYesSubscription type.
listenerCallback<ChangeNotification>YesCallback used to return the result.

Example

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

off('dataChange')9+

off(event:'dataChange', listener?: Callback<ChangeNotification>): void

Unsubscribes from the data change events. This API returns the result synchronously.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to unsubscribe from. The value is dataChange, which indicates data changes.
listenerCallback<ChangeNotification>NoCallback used to return the result.

Example

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

sync7+

sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void

Synchronizes the KV store manually. For details about the synchronization modes of the distributed data service, see [Distributed Data Service Overview] (../../database/database-mdds-overview.md).

Required permissions: ohos.permission.DISTRIBUTED_DATASYNC

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
deviceIdsstring[]YesList of IDs of the devices in the same networking environment to be synchronized.
modeSyncModeYesSynchronization mode.
delayMsnumberNoAllowed synchronization delay time, in ms.

Example

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

sync9+

sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void

Synchronizes the KV store manually. This API returns the result synchronously. For details about the synchronization modes of the distributed data service, see [Distributed Data Service Overview] (../../database/database-mdds-overview.md).

Required permissions: ohos.permission.DISTRIBUTED_DATASYNC

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
deviceIdsstring[]YesList of IDs of the devices in the same networking environment to be synchronized.
modeSyncModeYesSynchronization mode.
queryQueryYesQuery object to match.
delayMsnumberNoAllowed synchronization delay time, in ms.

Example

let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.sync(devices, query, mode , 1000);
    });
}catch(e) {
    console.log('Sync e' + e);
}

setSyncParam8+

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

Sets the default delay allowed for KV store synchronization. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
defaultAllowedDelayMsnumberYesDefault delay allowed for database synchronization, in ms.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

setSyncParam8+

setSyncParam(defaultAllowedDelayMs: number): Promise<void>

Sets the default delay allowed for KV store synchronization. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
defaultAllowedDelayMsnumberYesDefault delay allowed for database synchronization, in ms.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
try {
    const defaultAllowedDelayMs = 500;
    kvStore.setSyncParam(defaultAllowedDelayMs).then((err) => {
        console.log('SetSyncParam put success');
    }).catch((err) => {
        console.log('SetSyncParam put fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('SetSyncParam e ' + e);
}

getSecurityLevel8+

getSecurityLevel(callback: AsyncCallback<SecurityLevel>): void

Obtains the security level of this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<SecurityLevel>YesCallback invoked to return the security level obtained.

Example

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

getSecurityLevel8+

getSecurityLevel(): Promise<SecurityLevel>

Obtains the security level of this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Return value

TypeDescription
Promise<SecurityLevel>Promise used to return the security level obtained.

Example

let kvStore;
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+

Provides methods to query and synchronize data in a device KV store. This class inherits from KVStore.

Data is distinguished by device in a device KV store. Each device can only write and modify its own data. Data of other devices is read-only and cannot be modified.

For example, a device KV store can be used to implement image sharing between devices. The images of other devices can be viewed, but not be modified or deleted.

Before calling any method in DeviceKVStore, you must use getKVStore to obtain a DeviceKVStore object.

get8+

get(deviceId: string, key: string, callback: AsyncCallback<boolean|string|number|Uint8Array>): void

Obtains a string value that matches the specified device ID and key. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
keystringYesKey to match.
callbackAsyncCallback<boolean|string|number|Uint8Array>YesCallback used to return the value obtained.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
try{
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err,data) {
        console.log('put success');
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, function (err,data) {
            console.log('get success');
        });
    })
}catch(e) {
    console.log('get e' + e);
}

get8+

get(deviceId: string, key: string): Promise<boolean|string|number|Uint8Array>

Obtains a string value that matches the specified device ID and key. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
keystringYesKey to match.

Return value

TypeDescription
Promise<boolean|string|number|Uint8Array>Promise used to return the string value obtained.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(async (data) => {
        console.log(' put success');
        kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
            console.log('get success');
        }).catch((err) => {
            console.log('get fail ' + JSON.stringify(err));
        });
    }).catch((error) => {
        console.log('put error' + error);
    });
} catch (e) {
    console.log('Get e ' + e);
}

getEntries8+

getEntries(deviceId: string, keyPrefix: string, callback: AsyncCallback<Entry[]>): void

Obtains all KV pairs that match the specified device ID and key prefix. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
keyPrefixstringYesKey prefix to match.
callbackAsyncCallback<Entry[]>YesCallback used to return the KV pairs obtained.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + entries);
    kvStore.putBatch(entries, async function (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<Entry[]>

Obtains all KV pairs that match the specified device ID and key prefix. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
keyPrefixstringYesKey prefix to match.

Return value

TypeDescription
Promise<Entry[]>Promise used to return the KV pairs obtained.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + 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<Entry[]>): void

Obtains the KV pairs that match the specified Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.
callbackAsyncCallback<Entry[]>YesCallback used to return the KV pairs obtained.

Example

let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        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<Entry[]>

Obtains the KV pairs that match the specified Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<Entry[]>Promise used to return the KV pairs obtained.

Example

let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        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<Entry[]>): void

Obtains the KV pairs that match the specified device ID and Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
queryQueryYesQuery object to match.
callbackAsyncCallback<Entry[]>YesCallback invoked to return the KV pairs obtained.

Example

let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries, async function (err,data) {
        console.log('putBatch success');
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
        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<Entry[]>

Obtains the KV pairs that match the specified device ID and Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<Entry[]>Promise used to return the KV pairs obtained.

Example

let kvStore;
try {
    var arr = new Uint8Array([21,31]);
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_bool_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.BYTE_ARRAY,
                value : arr
            }
        }
        entries.push(entry);
    }
    console.log('entries: ' + JSON.stringify(entries));
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
        var query = new distributedData.Query();
        query.deviceId('localDeviceId');
        query.prefixKey("batch_test");
        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<KvStoreResultSet>): void

Obtains a KvStoreResultSet object that matches the specified device ID and key prefix. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
keyPrefixstringYesKey prefix to match.
callbackAsyncCallback<KvStoreResultSet[]>YesCallback invoked to return the KvStoreResultSet object obtained.

Example

let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (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<KvStoreResultSet>

Obtains a KvStoreResultSet object that matches the specified device ID and key prefix. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
keyPrefixstringYesKey prefix to match.

Return value

TypeDescription
Promise<KvStoreResultSet[]>Promise used to return the KvStoreResultSet object obtained.

Example

let kvStore;
try {
    let resultSet;
    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<KvStoreResultSet>): void

Obtains a KvStoreResultSet object that matches the specified Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.
callbackAsyncCallback<KvStoreResultSet[]>YesCallback invoked to return the KvStoreResultSet object obtained.

Example

let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.getResultSet(query, async function (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<KvStoreResultSet>

Obtains a KvStoreResultSet object that matches the specified Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<KvStoreResultSet[]>Promise used to return the KvStoreResultSet object obtained.

Example

let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + err);
    });
    const query = new distributedData.Query();
    query.deviceId('localDeviceId');
    query.prefixKey("batch_test");
    console.log("GetResultSet " + query.getSqlLike());
    kvStore.getResultSet(query).then((result) => {
        console.log('getResultSet 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<KvStoreResultSet>): void

Obtains a KvStoreResultSet object that matches the specified device ID and Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
queryQueryYesQuery object to match.
callbackAsyncCallback<KvStoreResultSet[]>YesCallback invoked to return the KvStoreResultSet object obtained.

Example

let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSet('localDeviceId', query, async function (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<KvStoreResultSet>

Obtains a KvStoreResultSet object that matches the specified device ID and Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<KvStoreResultSet[]>Promise used to return the KvStoreResultSet object obtained.

Example

let kvStore;
try {
    let resultSet;
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries).then(async (err) => {
        console.log('GetResultSet putBatch success');
    }).catch((err) => {
        console.log('PutBatch putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.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>): void

Closes the KvStoreResultSet object obtained by DeviceKVStore.getResultSet. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
resultSetKvStoreResultSetYesKvStoreResultSet object to close.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

let kvStore;
try {
    console.log('CloseResultSet success');
    let resultSet = null;
    kvStore.closeResultSet(resultSet, function (err, data) {
        if (err == undefined) {
            console.log('closeResultSet success');
        } else {
            console.log('closeResultSet fail');
        }
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}

closeResultSet8+

closeResultSet(resultSet: KvStoreResultSet): Promise<void>

Closes the KvStoreResultSet object obtained by DeviceKVStore.getResultSet. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
resultSetKvStoreResultSetYesKvStoreResultSet object to close.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
try {
    console.log('CloseResultSet success');
    let resultSet = null;
    kvStore.closeResultSet(resultSet).then(() => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('CloseResultSet e ' + e);
}

getResultSize8+

getResultSize(query: Query, callback: AsyncCallback<number>): void

Obtains the number of results that matches the specified Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.
callbackAsyncCallback<number>YesCallback invoked to return the number of results obtained.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.getResultSize(query, async function (err, resultSize) {
            console.log('getResultSet succeed.');
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}

getResultSize8+

getResultSize(query: Query): Promise<number>

Obtains the number of results that matches the specified Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<number>Promise used to return the number of results obtained.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries).then(async (err) => {
        console.log('putBatch success');
    }).catch((err) => {
        console.log('putBatch fail ' + JSON.stringify(err));
    });
    const query = new distributedData.Query();
    query.prefixKey("batch_test");
    query.deviceId('localDeviceId');
    kvStore.getResultSize(query).then((resultSize) => {
        console.log('getResultSet 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<number>): void;

Obtains the number of results that matches the specified device ID and Query object. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
queryQueryYesQuery object to match.
callbackAsyncCallback<number>YesCallback invoked to return the number of results obtained.

Example

let kvStore;
try {
    let entries = [];
    for (var i = 0; i < 10; i++) {
        var key = 'batch_test_string_key';
        var entry = {
            key : key + i,
            value : {
                type : distributedData.ValueType.STRING,
                value : 'batch_test_string_value'
            }
        }
        entries.push(entry);
    }
    kvStore.putBatch(entries, async function (err, data) {
        console.log('putBatch success');
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
            console.log('getResultSet succeed.');
        });
    });
} catch(e) {
    console.log('GetResultSize e ' + e);
}

getResultSize8+

getResultSize(deviceId: string, query: Query): Promise<number>

Obtains the number of results that matches the specified device ID and Query object. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
queryQueryYesQuery object to match.

Return value

TypeDescription
Promise<number>Promise used to return the number of results obtained.

Example

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

removeDeviceData8+

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

Deletes data of the specified device from this KV store. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

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

removeDeviceData8+

removeDeviceData(deviceId: string): Promise<void>

Deletes data of the specified device from this KV store. This API uses a promise to return the result.

System capability: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Parameters

NameTypeMandatoryDescription
deviceIdstringYesID of the target device.

Return value

TypeDescription
Promise<void>Promise that returns no value.

Example

let kvStore;
const KEY_TEST_STRING_ELEMENT = 'key_test_string';
const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
try {
    kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then((err) => {
        console.log('RemoveDeviceData put success');
    }).catch((err) => {
        console.log('RemoveDeviceData put fail ' + JSON.stringify(err));
    });
    const deviceid = 'no_exist_device_id';
    kvStore.removeDeviceData(deviceid).then((err) => {
        console.log('removeDeviceData success');
    }).catch((err) => {
        console.log('removeDeviceData fail ' + JSON.stringify(err));
    });
    kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
        console.log('RemoveDeviceData get success data:' + data);
    }).catch((err) => {
        console.log('RemoveDeviceData get fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('RemoveDeviceData e ' + e);
}

sync8+

sync(deviceIds: string[], mode: SyncMode, delayMs?: number): void

Synchronizes the KV store manually. For details about the synchronization modes of the distributed data service, see [Distributed Data Service Overview] (../../database/database-mdds-overview.md).

Required permissions: ohos.permission.DISTRIBUTED_DATASYNC

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
deviceIdsstring[]YesIDs of the devices to be synchronized.
modeSyncModeYesSynchronization mode.
delayMsnumberNoAllowed synchronization delay time, in ms.

Example

let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        kvStore.sync(devices, mode);
    });
}catch(e) {
    console.log('Sync e' + e);
}

sync9+

sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void

Synchronizes the KV store manually. This API returns the result synchronously. For details about the synchronization modes of the distributed data service, see [Distributed Data Service Overview] (../../database/database-mdds-overview.md).

Required permissions: ohos.permission.DISTRIBUTED_DATASYNC

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
deviceIdsstring[]YesIDs of the devices to be synchronized.
queryQueryYesQuery object to match.
delayMsnumberNoAllowed synchronization delay time, in ms.

Example

let kvStore;
const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
try {
    kvStore.on('syncComplete', function (data) {
        console.log('Sync dataChange');
    });
    kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) {
        console.log('Sync put success');
        const devices = ['deviceList'];
        const mode = distributedData.SyncMode.PULL_ONLY;
        const query = new distributedData.Query();
        query.prefixKey("batch_test");
        query.deviceId('localDeviceId');
        kvStore.sync(devices, query, 1000);
    });
}catch(e) {
    console.log('Sync e' + e);
}

on('syncComplete')8+

on(event: 'syncComplete', syncCallback: Callback<Array<[string, number]>>): void

Subscribes to the data synchronization complete events.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to subscribe to. The value is syncComplete, which indicates the data synchronization complete event.
syncCallbackCallback<Array<[string, number]>>YesCallback used to return the synchronization result.

Example

let kvStore;
const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
const VALUE_TEST_FLOAT_ELEMENT = 321.12;
try {
    kvStore.on('syncComplete', function (data) {
        console.log('syncComplete ' + data)
    });
    kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then((data) => {
        console.log('syncComplete put success');
    }).catch((error) => {
        console.log('syncComplete put fail ' + error);
    });
}catch(e) {
    console.log('syncComplete put e ' + e);
}

off('syncComplete')8+

off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void

Unsubscribes from the synchronization complete events. This API returns the result synchronously.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to unsubscribe from. The value is syncComplete, which indicates the data synchronization complete event.
syncCallbackCallback<Array<[string, number]>>NoCallback used to return the synchronization result.

Example

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

on('dataChange')9+

on(event: 'dataChange', type: SubscribeType, listener: Callback<ChangeNotification>): void

Subscribes to data changes of the specified type. This API returns the result synchronously.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to subscribe to. The value is dataChange, which indicates data changes.
typeSubscribeTypeYesSubscription type.
listenerCallback<ChangeNotification>YesCallback used to return the result.

Example

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

off('dataChange')9+

off(event:'dataChange', listener?: Callback<ChangeNotification>): void

Unsubscribes from the data change events. This API returns the result synchronously.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

Parameters

NameTypeMandatoryDescription
eventstringYesEvent to unsubscribe from. The value is dataChange, which indicates data changes.
listenerCallback<ChangeNotification>NoCallback used to return the result.

Example

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

SyncMode

Enumerates the synchronization modes.

System capability: SystemCapability.DistributedDataManager.KVStore.Core

NameValueDescription
PULL_ONLY0Pull data from the peer end to the local end only.
PUSH_ONLY1Push data from the local end to the peer end only.
PUSH_PULL2Push data from the local end to the peer end and then pull data from the peer end to the local end.

你可能感兴趣的文章

开源鸿蒙 APIs

开源鸿蒙 API Reference Document Description

开源鸿蒙 Bundle

开源鸿蒙 Context

开源鸿蒙 DataUriUtils

开源鸿蒙 EnterpriseAdminExtensionAbility

开源鸿蒙 Work Scheduler Callbacks

开源鸿蒙 AbilityContext

开源鸿蒙 ErrorCode

开源鸿蒙 wantConstant

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/2f97c054316b456ebcfe0c4d4d30853b