分布式鍵值數(shù)據(jù)庫

2024-01-23 16:06 更新

分布式鍵值數(shù)據(jù)庫為應用程序提供不同設備間數(shù)據(jù)庫的分布式協(xié)同能力。通過調用分布式鍵值數(shù)據(jù)庫各個接口,應用程序可將數(shù)據(jù)保存到分布式鍵值數(shù)據(jù)庫中,并可對分布式鍵值數(shù)據(jù)庫中的數(shù)據(jù)進行增加、刪除、修改、查詢等操作。

該模塊提供以下分布式鍵值數(shù)據(jù)庫相關的常用功能:

  • KVManager:分布式鍵值數(shù)據(jù)庫管理實例,用于獲取數(shù)據(jù)庫的相關信息。
  • KVStoreResultSet:提供獲取數(shù)據(jù)庫結果集的相關方法,包括查詢和移動數(shù)據(jù)讀取位置等。
  • Query:使用謂詞表示數(shù)據(jù)庫查詢,提供創(chuàng)建Query實例、查詢數(shù)據(jù)庫中的數(shù)據(jù)和添加謂詞的方法。
  • SingleKVStore:單版本分布式鍵值數(shù)據(jù)庫,不對數(shù)據(jù)所屬設備進行區(qū)分,提供查詢數(shù)據(jù)的方法。
  • DeviceKVStore:設備協(xié)同數(shù)據(jù)庫,繼承自SingleKVStore,以設備維度對數(shù)據(jù)進行區(qū)分,提供查詢數(shù)據(jù)的方法。
說明

本模塊首批接口從API version 9開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

分布式鍵值數(shù)據(jù)庫當前僅支持本地功能,分布式功能暫不支持。

導入模塊

  1. import distributedKVStore from '@ohos.data.distributedKVStore';

KVManagerConfig

提供KVManager實例的配置信息,包括調用方的包名和應用的上下文。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

類型

必填

說明

context

Context

應用的上下文。

FA模型的應用Context定義見Context。

Stage模型的應用Context定義見Context

bundleName

string

調用方的包名。

Constants

分布式鍵值數(shù)據(jù)庫常量。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

說明

MAX_KEY_LENGTH

1024

數(shù)據(jù)庫中Key允許的最大長度,單位字節(jié)。

MAX_VALUE_LENGTH

4194303

數(shù)據(jù)庫中Value允許的最大長度,單位字節(jié)。

MAX_KEY_LENGTH_DEVICE

896

設備協(xié)同數(shù)據(jù)庫中key允許的最大長度,單位字節(jié)。

MAX_STORE_ID_LENGTH

128

數(shù)據(jù)庫標識符允許的最大長度,單位字節(jié)。

MAX_QUERY_LENGTH

512000

最大查詢長度,單位字節(jié)。

MAX_BATCH_SIZE

128

最大批處理操作數(shù)量。

ValueType

數(shù)據(jù)類型枚舉。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

說明

STRING

表示值類型為字符串。

INTEGER

表示值類型為整數(shù)。

FLOAT

表示值類型為浮點數(shù)。

BYTE_ARRAY

表示值類型為字節(jié)數(shù)組。

BOOLEAN

表示值類型為布爾值。

DOUBLE

表示值類型為雙浮點數(shù)。

Value

存儲在數(shù)據(jù)庫中的值對象。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

類型

必填

說明

type

ValueType

值類型。

value

Uint8Array | string | number | boolean

值。

Entry

存儲在數(shù)據(jù)庫中的鍵值對。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

類型

必填

說明

key

string

鍵值。

value

Value

值對象。

ChangeNotification

數(shù)據(jù)變更時通知的對象,包括數(shù)據(jù)插入的數(shù)據(jù)、更新的數(shù)據(jù)、刪除的數(shù)據(jù)和設備ID。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

類型

必填

說明

insertEntries

Entry[]

數(shù)據(jù)添加記錄。

updateEntries

Entry[]

數(shù)據(jù)更新記錄。

deleteEntries

Entry[]

數(shù)據(jù)刪除記錄。

deviceId

string

設備ID,此處為設備UUID。

SyncMode

同步模式枚舉。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

說明

PULL_ONLY

表示只能從遠端拉取數(shù)據(jù)到本端。

PUSH_ONLY

表示只能從本端推送數(shù)據(jù)到遠端。

PUSH_PULL

表示從本端推送數(shù)據(jù)到遠端,然后從遠端拉取數(shù)據(jù)到本端。

SubscribeType

訂閱類型枚舉。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

說明

SUBSCRIBE_TYPE_LOCAL

表示訂閱本地數(shù)據(jù)變更。

SUBSCRIBE_TYPE_REMOTE

表示訂閱遠端數(shù)據(jù)變更。

此接口能力在HarmonyOS 3.1Release暫不支持。

SUBSCRIBE_TYPE_ALL

表示訂閱遠端和本地數(shù)據(jù)變更。

此接口能力在HarmonyOS 3.1Release暫不支持。

KVStoreType

分布式鍵值數(shù)據(jù)庫類型枚舉。

名稱

說明

DEVICE_COLLABORATION

表示多設備協(xié)同數(shù)據(jù)庫。

數(shù)據(jù)庫特點: 數(shù)據(jù)以設備的維度管理,不存在沖突;支持按照設備的維度查詢數(shù)據(jù)。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

SINGLE_VERSION

表示單版本數(shù)據(jù)庫。

數(shù)據(jù)庫特點: 數(shù)據(jù)不分設備,設備之間修改相同的key會覆蓋。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

SecurityLevel

數(shù)據(jù)庫的安全級別枚舉。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

名稱

說明

S1

表示數(shù)據(jù)庫的安全級別為低級別,數(shù)據(jù)的泄露、篡改、破壞、銷毀可能會給個人或組織導致有限的不利影響。

例如,性別、國籍,用戶申請記錄等。

S2

表示數(shù)據(jù)庫的安全級別為中級別,數(shù)據(jù)的泄露、篡改、破壞、銷毀可能會給個人或組織導致嚴重的不利影響。

例如,個人詳細通信地址,姓名昵稱等。

S3

表示數(shù)據(jù)庫的安全級別為高級別,數(shù)據(jù)的泄露、篡改、破壞、銷毀可能會給個人或組織導致嚴峻的不利影響。

例如,個人實時精確定位信息、運動軌跡等。

S4

表示數(shù)據(jù)庫的安全級別為關鍵級別,業(yè)界法律法規(guī)中定義的特殊數(shù)據(jù)類型,涉及個人的最私密領域的信息或者一旦泄露、篡改、破壞、銷毀可能會給個人或組織造成重大的不利影響數(shù)據(jù)。

例如,政治觀點、宗教、和哲學信仰、工會成員資格、基因數(shù)據(jù)、生物信息、健康和性生活狀況、性取向等或設備認證鑒權、個人的信用卡等財務信息。

Options

用于提供創(chuàng)建數(shù)據(jù)庫的配置信息。

名稱

類型

必填

說明

createIfMissing

boolean

當數(shù)據(jù)庫文件不存在時是否創(chuàng)建數(shù)據(jù)庫,默認為true,即創(chuàng)建。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

encrypt

boolean

設置數(shù)據(jù)庫文件是否加密,默認為false,即不加密。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

backup

boolean

設置數(shù)據(jù)庫文件是否備份,默認為true,即備份。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

autoSync

boolean

設置數(shù)據(jù)庫文件是否自動同步。默認為false,即手動同步;設置為true時,表示自動同步。

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

需要權限: ohos.permission.DISTRIBUTED_DATASYNC

kvStoreType

KVStoreType

設置要創(chuàng)建的數(shù)據(jù)庫類型,默認為DEVICE_COLLABORATION,即多設備協(xié)同數(shù)據(jù)庫。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

securityLevel

SecurityLevel

設置數(shù)據(jù)庫安全級別。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

schema

Schema

設置定義存儲在數(shù)據(jù)庫中的值,默認為undefined,即不使用Schema。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

Schema

表示數(shù)據(jù)庫模式,可以在創(chuàng)建或打開數(shù)據(jù)庫時創(chuàng)建Schema對象并將它們放入Options中。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

名稱

類型

可讀

可寫

說明

root

FieldNode

表示json根對象。

indexes

Array<string>

表示json類型的字符串數(shù)組。

mode

number

表示Schema的模式。

skip

number

Schema的跳躍大小。

constructor

constructor()

用于創(chuàng)建Schema實例的構造函數(shù)。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

FieldNode

表示 Schema 實例的節(jié)點,提供定義存儲在數(shù)據(jù)庫中的值的方法。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

名稱

類型

可讀

可寫

說明

nullable

boolean

表示數(shù)據(jù)庫字段是否可以為空。

default

string

表示Fieldnode的默認值。

type

number

表示指定節(jié)點對應數(shù)據(jù)類型的值。

constructor

constructor(name: string)

用于創(chuàng)建帶有string字段FieldNode實例的構造函數(shù)。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

name

string

FieldNode的值。

appendChild

appendChild(child: FieldNode): boolean

在當前 FieldNode 中添加一個子節(jié)點。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

child

FieldNode

要附加的域節(jié)點。

返回值:

類型

說明

boolean

返回true表示子節(jié)點成功添加到FieldNode;返回false則表示操作失敗。

示例:

  1. try {
  2. let node = new distributedKVStore.FieldNode("root");
  3. let child1 = new distributedKVStore.FieldNode("child1");
  4. let child2 = new distributedKVStore.FieldNode("child2");
  5. let child3 = new distributedKVStore.FieldNode("child3");
  6. node.appendChild(child1);
  7. node.appendChild(child2);
  8. node.appendChild(child3);
  9. console.info("appendNode " + JSON.stringify(node));
  10. child1 = null;
  11. child2 = null;
  12. child3 = null;
  13. node = null;
  14. } catch (e) {
  15. console.error("AppendChild " + e);
  16. }

distributedKVStore.createKVManager

createKVManager(config: KVManagerConfig): KVManager

創(chuàng)建一個KVManager對象實例,用于管理數(shù)據(jù)庫對象。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

config

KVManagerConfig

提供KVManager實例的配置信息,包括調用方的包名和用戶信息。

返回值:

類型

說明

KVManager

返回創(chuàng)建的KVManager對象實例。

示例:

Stage模型下的示例:

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. let kvManager;
  3. export default class EntryAbility extends UIAbility {
  4. onCreate() {
  5. console.info("MyAbilityStage onCreate")
  6. let context = this.context
  7. const kvManagerConfig = {
  8. context: context,
  9. bundleName: 'com.example.datamanagertest',
  10. }
  11. try {
  12. kvManager = distributedKVStore.createKVManager(kvManagerConfig);
  13. console.info("Succeeded in creating KVManager");
  14. } catch (e) {
  15. console.error(`Failed to create KVManager.code is ${e.code},message is ${e.message}`);
  16. }
  17. }
  18. }

FA模型下的示例:

  1. import featureAbility from '@ohos.ability.featureAbility';
  2. let kvManager;
  3. let context = featureAbility.getContext()
  4. const kvManagerConfig = {
  5. context: context,
  6. bundleName: 'com.example.datamanagertest',
  7. }
  8. try {
  9. kvManager = distributedKVStore.createKVManager(kvManagerConfig);
  10. console.info("Succeeded in creating KVManager");
  11. } catch (e) {
  12. console.error(`Failed to create KVManager.code is ${e.code},message is ${e.message}`);
  13. }

KVManager

分布式鍵值數(shù)據(jù)庫管理實例,用于獲取分布式鍵值數(shù)據(jù)庫的相關信息。在調用KVManager的方法前,需要先通過createKVManager構建一個KVManager實例。

getKVStore

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

通過指定Options和storeId,創(chuàng)建并獲取分布式鍵值數(shù)據(jù)庫,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

storeId

string

數(shù)據(jù)庫唯一標識符,長度不大于MAX_STORE_ID_LENGTH

options

Options

創(chuàng)建分布式鍵值實例的配置信息。

callback

AsyncCallback<T>

回調函數(shù)。返回創(chuàng)建的分布式鍵值數(shù)據(jù)庫實例(根據(jù)kvStoreType的不同,可以創(chuàng)建SingleKVStore實例和DeviceKVStore實例)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100002

Open existed database with changed options.

15100003

Database corrupted.

示例:

  1. let kvStore;
  2. try {
  3. const options = {
  4. createIfMissing: true,
  5. encrypt: false,
  6. backup: false,
  7. autoSync: true,
  8. kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
  9. securityLevel: distributedKVStore.SecurityLevel.S2,
  10. };
  11. kvManager.getKVStore('storeId', options, function (err, store) {
  12. if (err) {
  13. console.error(`Failed to get KVStore.code is ${err.code},message is ${err.message}`);
  14. return;
  15. }
  16. console.info("Succeeded in getting KVStore");
  17. kvStore = store;
  18. });
  19. } catch (e) {
  20. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  21. }

getKVStore

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

通過指定Options和storeId,創(chuàng)建并獲取分布式鍵值數(shù)據(jù)庫,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

storeId

string

數(shù)據(jù)庫唯一標識符,長度不大于MAX_STORE_ID_LENGTH。

options

Options

創(chuàng)建分布式鍵值實例的配置信息。

返回值:

類型

說明

Promise<T>

Promise對象。返回創(chuàng)建的分布式鍵值數(shù)據(jù)庫實例(根據(jù)kvStoreType的不同,可以創(chuàng)建SingleKVStore實例和DeviceKVStore實例。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100002

Open existed database with changed options.

15100003

Database corrupted.

示例:

  1. let kvStore;
  2. try {
  3. const options = {
  4. createIfMissing: true,
  5. encrypt: false,
  6. backup: false,
  7. autoSync: true,
  8. kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
  9. securityLevel: distributedKVStore.SecurityLevel.S2,
  10. };
  11. kvManager.getKVStore('storeId', options).then((store) => {
  12. console.info("Succeeded in getting KVStore");
  13. kvStore = store;
  14. }).catch((err) => {
  15. console.error(`Failed to get KVStore.code is ${err.code},message is ${err.message}`);
  16. });
  17. } catch (e) {
  18. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  19. }

closeKVStore

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

通過storeId的值關閉指定的分布式鍵值數(shù)據(jù)庫,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

appId

string

所調用數(shù)據(jù)庫方的包名。

storeId

string

要關閉的數(shù)據(jù)庫唯一標識符,長度不大于MAX_STORE_ID_LENGTH。

callback

AsyncCallback<void>

回調函數(shù)。

示例:

  1. const options = {
  2. createIfMissing: true,
  3. encrypt: false,
  4. backup: false,
  5. autoSync: true,
  6. kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
  7. schema: undefined,
  8. securityLevel: distributedKVStore.SecurityLevel.S2,
  9. }
  10. try {
  11. kvManager.getKVStore('storeId', options, async function (err, store) {
  12. if (err != undefined) {
  13. console.error(`Failed to get KVStore.code is ${err.code},message is ${err.message}`);
  14. return;
  15. }
  16. console.info('Succeeded in getting KVStore');
  17. kvStore = store;
  18. kvStore = null;
  19. store = null;
  20. kvManager.closeKVStore('appId', 'storeId', function (err) {
  21. if (err != undefined) {
  22. console.error(`Failed to close KVStore.code is ${err.code},message is ${err.message}`);
  23. return;
  24. }
  25. console.info('Succeeded in closing KVStore');
  26. });
  27. });
  28. } catch (e) {
  29. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  30. }

closeKVStore

closeKVStore(appId: string, storeId: string): Promise<void>

通過storeId的值關閉指定的分布式鍵值數(shù)據(jù)庫,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

appId

string

所調用數(shù)據(jù)庫方的包名。

storeId

string

要關閉的數(shù)據(jù)庫唯一標識符,長度不大于MAX_STORE_ID_LENGTH。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. const options = {
  2. createIfMissing: true,
  3. encrypt: false,
  4. backup: false,
  5. autoSync: true,
  6. kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
  7. schema: undefined,
  8. securityLevel: distributedKVStore.SecurityLevel.S2,
  9. }
  10. try {
  11. kvManager.getKVStore('storeId', options).then(async (store) => {
  12. console.info('Succeeded in getting KVStore');
  13. kvStore = store;
  14. kvStore = null;
  15. store = null;
  16. kvManager.closeKVStore('appId', 'storeId').then(() => {
  17. console.info('Succeeded in closing KVStore');
  18. }).catch((err) => {
  19. console.error(`Failed to close KVStore.code is ${err.code},message is ${err.message}`);
  20. });
  21. }).catch((err) => {
  22. console.error(`Failed to get KVStore.code is ${err.code},message is ${err.message}`);
  23. });
  24. } catch (e) {
  25. console.error(`Failed to close KVStore.code is ${e.code},message is ${e.message}`);
  26. }

deleteKVStore

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

通過storeId的值刪除指定的分布式鍵值數(shù)據(jù)庫,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

appId

string

所調用數(shù)據(jù)庫方的包名。

storeId

string

要刪除的數(shù)據(jù)庫唯一標識符,長度不大于MAX_STORE_ID_LENGTH。

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100004

Not found.

示例:

  1. const options = {
  2. createIfMissing: true,
  3. encrypt: false,
  4. backup: false,
  5. autoSync: true,
  6. kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
  7. schema: undefined,
  8. securityLevel: distributedKVStore.SecurityLevel.S2,
  9. }
  10. try {
  11. kvManager.getKVStore('store', options, async function (err, store) {
  12. if (err != undefined) {
  13. console.error(`Failed to get KVStore.code is ${err.code},message is ${err.message}`);
  14. return;
  15. }
  16. console.info('Succeeded in getting KVStore');
  17. kvStore = store;
  18. kvStore = null;
  19. store = null;
  20. kvManager.deleteKVStore('appId', 'storeId', function (err) {
  21. if (err != undefined) {
  22. console.error(`Failed to delete KVStore.code is ${err.code},message is ${err.message}`);
  23. return;
  24. }
  25. console.info(`Succeeded in deleting KVStore`);
  26. });
  27. });
  28. } catch (e) {
  29. console.error(`Failed to delete KVStore.code is ${e.code},message is ${e.message}`);
  30. }

deleteKVStore

deleteKVStore(appId: string, storeId: string): Promise<void>

通過storeId的值刪除指定的分布式鍵值數(shù)據(jù)庫,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

appId

string

所調用數(shù)據(jù)庫方的包名。

storeId

string

要刪除的數(shù)據(jù)庫唯一標識符,長度不大于MAX_STORE_ID_LENGTH。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100004

Not found.

示例:

  1. const options = {
  2. createIfMissing: true,
  3. encrypt: false,
  4. backup: false,
  5. autoSync: true,
  6. kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
  7. schema: undefined,
  8. securityLevel: distributedKVStore.SecurityLevel.S2,
  9. }
  10. try {
  11. kvManager.getKVStore('storeId', options).then(async (store) => {
  12. console.info('Succeeded in getting KVStore');
  13. kvStore = store;
  14. kvStore = null;
  15. store = null;
  16. kvManager.deleteKVStore('appId', 'storeId').then(() => {
  17. console.info('Succeeded in deleting KVStore');
  18. }).catch((err) => {
  19. console.error(`Failed to delete KVStore.code is ${err.code},message is ${err.message}`);
  20. });
  21. }).catch((err) => {
  22. console.error(`Failed to get KVStore.code is ${err.code},message is ${err.message}`);
  23. });
  24. } catch (e) {
  25. console.error(`Failed to delete KVStore.code is ${e.code},message is ${e.message}`);
  26. }

getAllKVStoreId

getAllKVStoreId(appId: string, callback: AsyncCallback<string[]>): void

獲取所有通過getKVStore方法創(chuàng)建的且沒有調用deleteKVStore方法刪除的分布式鍵值數(shù)據(jù)庫的storeId,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

appId

string

所調用數(shù)據(jù)庫方的包名。

callback

AsyncCallback<string[]>

回調函數(shù)。返回所有創(chuàng)建的分布式鍵值數(shù)據(jù)庫的storeId。

示例:

  1. try {
  2. kvManager.getAllKVStoreId('appId', function (err, data) {
  3. if (err != undefined) {
  4. console.error(`Failed to get AllKVStoreId.code is ${err.code},message is ${err.message}`);
  5. return;
  6. }
  7. console.info('Succeeded in getting AllKVStoreId');
  8. console.info(`GetAllKVStoreId size = ${data.length}`);
  9. });
  10. } catch (e) {
  11. console.error(`Failed to get AllKVStoreId.code is ${e.code},message is ${e.message}`);
  12. }

getAllKVStoreId

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

獲取所有通過getKVStore方法創(chuàng)建的且沒有調用deleteKVStore方法刪除的分布式鍵值數(shù)據(jù)庫的storeId,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

appId

string

所調用數(shù)據(jù)庫方的包名。

返回值:

類型

說明

Promise<string[]>

Promise對象。返回所有創(chuàng)建的分布式鍵值數(shù)據(jù)庫的storeId。

示例:

  1. try {
  2. console.info('GetAllKVStoreId');
  3. kvManager.getAllKVStoreId('appId').then((data) => {
  4. console.info('Succeeded in getting AllKVStoreId');
  5. console.info(`GetAllKVStoreId size = ${data.length}`);
  6. }).catch((err) => {
  7. console.error(`Failed to get AllKVStoreId.code is ${err.code},message is ${err.message}`);
  8. });
  9. } catch (e) {
  10. console.error(`Failed to get AllKVStoreId.code is ${e.code},message is ${e.message}`);
  11. }

on('distributedDataServiceDie')

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

訂閱服務狀態(tài)變更通知。如果服務終止,需要重新注冊數(shù)據(jù)變更通知和同步完成事件回調通知,并且同步操作會返回失敗。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

event

string

訂閱的事件名,固定為'distributedDataServiceDie',即服務狀態(tài)變更事件。

deathCallback

Callback<void>

回調函數(shù)。

示例:

  1. try {
  2. console.info('KVManagerOn');
  3. const deathCallback = function () {
  4. console.info('death callback call');
  5. }
  6. kvManager.on('distributedDataServiceDie', deathCallback);
  7. } catch (e) {
  8. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  9. }

off('distributedDataServiceDie')

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

取消訂閱服務狀態(tài)變更通知。參數(shù)中的deathCallback必須是已經(jīng)訂閱過的deathCallback,否則會取消訂閱失敗。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

event

string

取消訂閱的事件名,固定為'distributedDataServiceDie',即服務狀態(tài)變更事件。

deathCallback

Callback<void>

回調函數(shù)。如果該參數(shù)不填,那么會將之前訂閱過的所有的deathCallback取消訂閱。

示例:

  1. try {
  2. console.info('KVManagerOff');
  3. const deathCallback = function () {
  4. console.info('death callback call');
  5. }
  6. kvManager.off('distributedDataServiceDie', deathCallback);
  7. } catch (e) {
  8. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  9. }

KVStoreResultSet

提供獲取數(shù)據(jù)庫結果集的相關方法,包括查詢和移動數(shù)據(jù)讀取位置等。同時允許打開的結果集的最大數(shù)量為8個。

在調用KVStoreResultSet的方法前,需要先通過getKVStore構建一個SingleKVStore或者DeviceKVStore實例。

getCount

getCount(): number

獲取結果集中的總行數(shù)。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

number

返回數(shù)據(jù)的總行數(shù)。

示例:

  1. try {
  2. let resultSet;
  3. let count;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('getResultSet succeed.');
  6. resultSet = result;
  7. count = resultSet.getCount();
  8. console.info("getCount succeed:" + count);
  9. }).catch((err) => {
  10. console.error('getResultSet failed: ' + err);
  11. });
  12. } catch (e) {
  13. console.error("getCount failed: " + e);
  14. }

getPosition

getPosition(): number

獲取結果集中當前的讀取位置。讀取位置會因moveToFirst、moveToLast等操作而發(fā)生變化。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

number

返回當前讀取位置。取值范圍>= -1,值為 -1 時表示還未開始讀取,值為 0 時表示第一行。

示例:

  1. try {
  2. let resultSet;
  3. let position;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('getResultSet succeeded.');
  6. resultSet = result;
  7. position = resultSet.getPosition();
  8. console.info("getPosition succeed:" + position);
  9. }).catch((err) => {
  10. console.error('getResultSet failed: ' + err);
  11. });
  12. } catch (e) {
  13. console.error("getPosition failed: " + e);
  14. }

moveToFirst

moveToFirst(): boolean

將讀取位置移動到第一行。如果結果集為空,則返回false。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

boolean

返回true表示操作成功;返回false則表示操作失敗。

示例:

  1. try {
  2. let resultSet;
  3. let moved;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('getResultSet succeed.');
  6. resultSet = result;
  7. moved = resultSet.moveToFirst();
  8. console.info("moveToFirst succeed: " + moved);
  9. }).catch((err) => {
  10. console.error('getResultSet failed: ' + err);
  11. });
  12. } catch (e) {
  13. console.error("moveToFirst failed " + e);
  14. }

moveToLast

moveToLast(): boolean

將讀取位置移動到最后一行。如果結果集為空,則返回false。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

boolean

返回true表示操作成功;返回false則表示操作失敗。

示例:

  1. try {
  2. let resultSet;
  3. let moved;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('getResultSet succeed.');
  6. resultSet = result;
  7. moved = resultSet.moveToLast();
  8. console.info("moveToLast succeed:" + moved);
  9. }).catch((err) => {
  10. console.error('getResultSet failed: ' + err);
  11. });
  12. } catch (e) {
  13. console.error("moveToLast failed: " + e);
  14. }

moveToNext

moveToNext(): boolean

將讀取位置移動到下一行。如果結果集為空,則返回false。適用于全量獲取數(shù)據(jù)庫結果集的場景。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

boolean

返回true表示操作成功;返回false則表示操作失敗。

示例:

  1. try {
  2. let resultSet;
  3. let moved;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('getResultSet succeed.');
  6. resultSet = result;
  7. do {
  8. moved = resultSet.moveToNext();
  9. console.info("moveToNext succeed: " + moved);
  10. } while (moved)
  11. }).catch((err) => {
  12. console.error('getResultSet failed: ' + err);
  13. });
  14. } catch (e) {
  15. console.error("moveToNext failed: " + e);
  16. }

moveToPrevious

moveToPrevious(): boolean

將讀取位置移動到上一行。如果結果集為空,則返回false。適用于全量獲取數(shù)據(jù)庫結果集的場景。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

boolean

返回true表示操作成功;返回false則表示操作失敗。

示例:

  1. try {
  2. let resultSet;
  3. let moved;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('getResultSet succeed.');
  6. resultSet = result;
  7. moved = resultSet.moveToLast();
  8. moved = resultSet.moveToPrevious();
  9. console.info("moveToPrevious succeed:" + moved);
  10. }).catch((err) => {
  11. console.error('getResultSet failed: ' + err);
  12. });
  13. } catch (e) {
  14. console.error("moveToPrevious failed: " + e);
  15. }

move

move(offset: number): boolean

將讀取位置移動到當前位置的相對偏移量。即當前游標位置向下偏移 offset 行。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

offset

number

表示與當前位置的相對偏移量,負偏移表示向后移動,正偏移表示向前移動。

返回值:

類型

說明

boolean

返回true表示操作成功;返回false則表示操作失敗。

示例:

  1. try {
  2. let resultSet;
  3. let moved;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('Succeeded in getting resultSet');
  6. resultSet = result;
  7. moved = resultSet.move(2); //若當前位置為0,將讀取位置從絕對位置為0的位置移動2行,即移動到絕對位置為2,行數(shù)為3的位置
  8. console.info(`Succeeded in moving.moved = ${moved}`);
  9. }).catch((err) => {
  10. console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
  11. });
  12. } catch (e) {
  13. console.error(`Failed to move.code is ${e.code},message is ${e.message}`);
  14. }

moveToPosition

moveToPosition(position: number): boolean

將讀取位置從 0 移動到絕對位置。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

position

number

表示絕對位置。

返回值:

類型

說明

boolean

返回true表示操作成功;返回false則表示操作失敗。

示例

  1. try {
  2. let resultSet;
  3. let moved;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('Succeeded in getting resultSet');
  6. resultSet = result;
  7. moved = resultSet.moveToPosition(1);
  8. console.info(`Succeeded in moving to position.moved=${moved}`);
  9. }).catch((err) => {
  10. console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
  11. });
  12. } catch (e) {
  13. console.error(`Failed to move to position.code is ${e.code},message is ${e.message}`);
  14. }

isFirst

isFirst(): boolean

檢查讀取位置是否為第一行。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

boolean

返回true表示讀取位置為第一行;返回false表示讀取位置不是第一行。

示例:

  1. try {
  2. let resultSet;
  3. let isfirst;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('getResultSet succeed.');
  6. resultSet = result;
  7. isfirst = resultSet.isFirst();
  8. console.info("Check isFirst succeed:" + isfirst);
  9. }).catch((err) => {
  10. console.error('getResultSet failed: ' + err);
  11. });
  12. } catch (e) {
  13. console.error("Check isFirst failed: " + e);
  14. }

isLast

isLast(): boolean

檢查讀取位置是否為最后一行。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

boolean

返回true表示讀取位置為最后一行;返回false表示讀取位置不是最后一行。

示例:

  1. try {
  2. let resultSet;
  3. let islast;
  4. kvStore.getResultSet('batch_test_string_key').then((result) => {
  5. console.info('getResultSet succeed.');
  6. resultSet = result;
  7. islast = resultSet.isLast();
  8. console.info("Check isLast succeed: " + islast);
  9. }).catch((err) => {
  10. console.error('getResultSet failed: ' + err);
  11. });
  12. } catch (e) {
  13. console.error("Check isLast failed: " + e);
  14. }

isBeforeFirst

isBeforeFirst(): boolean

檢查讀取位置是否在第一行之前。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

boolean

返回true表示讀取位置在第一行之前;返回false表示讀取位置不在第一行之前。

示例:

  1. try {
  2. let resultSet;
  3. kvStore.getResultSet('batch_test_string_key').then((result) => {
  4. console.info('getResultSet succeed.');
  5. resultSet = result;
  6. const isbeforefirst = resultSet.isBeforeFirst();
  7. console.info("Check isBeforeFirst succeed: " + isbeforefirst);
  8. }).catch((err) => {
  9. console.error('getResultSet failed: ' + err);
  10. });
  11. } catch (e) {
  12. console.error("Check isBeforeFirst failed: " + e);
  13. }

isAfterLast

isAfterLast(): boolean

檢查讀取位置是否在最后一行之后。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

boolean

返回true表示讀取位置在最后一行之后;返回false表示讀取位置不在最后一行之后。

示例:

  1. try {
  2. let resultSet;
  3. kvStore.getResultSet('batch_test_string_key').then((result) => {
  4. console.info('getResultSet succeed.');
  5. resultSet = result;
  6. const isafterlast = resultSet.isAfterLast();
  7. console.info("Check isAfterLast succeed:" + isafterlast);
  8. }).catch((err) => {
  9. console.error('getResultSet failed: ' + err);
  10. });
  11. } catch (e) {
  12. console.error("Check isAfterLast failed: " + e);
  13. }

getEntry

getEntry(): Entry

從當前位置獲取對應的鍵值對。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Entry

返回鍵值對。

示例:

  1. try {
  2. let resultSet;
  3. kvStore.getResultSet('batch_test_string_key').then((result) => {
  4. console.info('getResultSet succeed.');
  5. resultSet = result;
  6. const entry = resultSet.getEntry();
  7. console.info("getEntry succeed:" + JSON.stringify(entry));
  8. }).catch((err) => {
  9. console.error('getResultSet failed: ' + err);
  10. });
  11. } catch (e) {
  12. console.error("getEntry failed: " + e);
  13. }

Query

使用謂詞表示數(shù)據(jù)庫查詢,提供創(chuàng)建Query實例、查詢數(shù)據(jù)庫中的數(shù)據(jù)和添加謂詞的方法。一個Query對象中謂詞數(shù)量上限為256個。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

constructor

constructor()

用于創(chuàng)建Schema實例的構造函數(shù)。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

reset

reset(): Query

重置Query對象。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Query

返回重置的Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.equalTo("key", "value");
  4. console.info("query is " + query.getSqlLike());
  5. query.reset();
  6. console.info("query is " + query.getSqlLike());
  7. query = null;
  8. } catch (e) {
  9. console.error("simply calls should be ok :" + e);
  10. }

equalTo

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

構造一個Query對象來查詢具有指定字段的條目,其值等于指定的值。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

value

number|string|boolean

表示指定的值。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.equalTo("field", "value");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

notEqualTo

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

構造一個Query對象以查詢具有指定字段且值不等于指定值的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

value

number|string|boolean

表示指定的值。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.notEqualTo("field", "value");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

greaterThan

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

構造一個Query對象以查詢具有大于指定值的指定字段的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

value

number|string|boolean

表示指定的值。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.greaterThan("field", "value");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

lessThan

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

構造一個Query對象以查詢具有小于指定值的指定字段的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

value

number|string

表示指定的值。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.lessThan("field", "value");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

greaterThanOrEqualTo

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

構造一個Query對象以查詢具有指定字段且值大于或等于指定值的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

value

number|string

表示指定的值。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.greaterThanOrEqualTo("field", "value");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

lessThanOrEqualTo

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

構造一個Query對象以查詢具有指定字段且值小于或等于指定值的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

value

number|string

表示指定的值。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.lessThanOrEqualTo("field", "value");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

isNull

isNull(field: string): Query

構造一個Query對象以查詢具有值為null的指定字段的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.isNull("field");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

inNumber

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

構造一個Query對象以查詢具有指定字段的條目,其值在指定的值列表中。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

valueList

number[]

表示指定的值列表。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.inNumber("field", [0, 1]);
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

inString

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

構造一個Query對象以查詢具有指定字段的條目,其值在指定的字符串值列表中。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

valueList

string[]

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

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.inString("field", ['test1', 'test2']);
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

notInNumber

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

構造一個Query對象以查詢具有指定字段的條目,該字段的值不在指定的值列表中。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

valueList

number[]

表示指定的值列表。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.notInNumber("field", [0, 1]);
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

notInString

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

構造一個Query對象以查詢具有指定字段且值不在指定字符串值列表中的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

valueList

string[]

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

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.notInString("field", ['test1', 'test2']);
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

like

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

構造一個Query對象以查詢具有與指定字符串值相似的指定字段的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

value

string

表示指定的字符串值。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.like("field", "value");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

unlike

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

構造一個Query對象以查詢具有與指定字符串值不相似的指定字段的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

value

string

表示指定的字符串值。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.unlike("field", "value");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

and

and(): Query

構造一個帶有與條件的查詢對象。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Query

返回查詢對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.notEqualTo("field", "value1");
  4. query.and();
  5. query.notEqualTo("field", "value2");
  6. console.info("query is " + query.getSqlLike());
  7. query = null;
  8. } catch (e) {
  9. console.error("duplicated calls should be ok :" + e);
  10. }

or

or(): Query

構造一個帶有或條件的Query對象。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Query

返回查詢對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.notEqualTo("field", "value1");
  4. query.or();
  5. query.notEqualTo("field", "value2");
  6. console.info("query is " + query.getSqlLike());
  7. query = null;
  8. } catch (e) {
  9. console.error("duplicated calls should be ok :" + e);
  10. }

orderByAsc

orderByAsc(field: string): Query

構造一個Query對象,將查詢結果按升序排序。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.notEqualTo("field", "value");
  4. query.orderByAsc("field");
  5. console.info(`query is ${query.getSqlLike()}`);
  6. query = null;
  7. } catch (e) {
  8. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  9. }

orderByDesc

orderByDesc(field: string): Query

構造一個Query對象,將查詢結果按降序排序。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.notEqualTo("field", "value");
  4. query.orderByDesc("field");
  5. console.info(`query is ${query.getSqlLike()}`);
  6. query = null;
  7. } catch (e) {
  8. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  9. }

limit

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

構造一個Query對象來指定結果的數(shù)量和開始位置。該接口必須要在Query對象查詢和升降序等操作之后調用,調用limit接口后,不可再對Query對象進行查詢和升降序等操作。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

total

number

表示指定的結果數(shù)。

offset

number

表示起始位置。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. let total = 10;
  2. let offset = 1;
  3. try {
  4. let query = new distributedKVStore.Query();
  5. query.notEqualTo("field", "value");
  6. query.limit(total, offset);
  7. console.info(`query is ${query.getSqlLike()}`);
  8. query = null;
  9. } catch (e) {
  10. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  11. }

isNotNull

isNotNull(field: string): Query

構造一個Query對象以查詢具有值不為null的指定字段的條目。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

fieId

string

表示指定字段,不能包含' ^ '。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.isNotNull("field");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. query = null;
  6. } catch (e) {
  7. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  8. }

beginGroup

beginGroup(): Query

創(chuàng)建一個帶有左括號的查詢條件組。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.beginGroup();
  4. query.isNotNull("field");
  5. query.endGroup();
  6. console.info("query is " + query.getSqlLike());
  7. query = null;
  8. } catch (e) {
  9. console.error("duplicated calls should be ok :" + e);
  10. }

endGroup

endGroup(): Query

創(chuàng)建一個帶有右括號的查詢條件組。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.beginGroup();
  4. query.isNotNull("field");
  5. query.endGroup();
  6. console.info("query is " + query.getSqlLike());
  7. query = null;
  8. } catch (e) {
  9. console.error("duplicated calls should be ok :" + e);
  10. }

prefixKey

prefixKey(prefix: string): Query

創(chuàng)建具有指定鍵前綴的查詢條件。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

prefix

string

表示指定的鍵前綴。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.prefixKey("$.name");
  4. query.prefixKey("0");
  5. console.info(`query is ${query.getSqlLike()}`);
  6. query = null;
  7. } catch (e) {
  8. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  9. }

setSuggestIndex

setSuggestIndex(index: string): Query

設置一個指定的索引,將優(yōu)先用于查詢。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

index

string

指示要設置的索引。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.setSuggestIndex("$.name");
  4. query.setSuggestIndex("0");
  5. console.info(`query is ${query.getSqlLike()}`);
  6. query = null;
  7. } catch (e) {
  8. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  9. }

deviceId

deviceId(deviceId:string):Query

添加設備ID作為key的前綴。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

指示查詢的設備ID。

返回值:

類型

說明

Query

返回Query對象。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. query.deviceId("deviceId");
  4. console.info(`query is ${query.getSqlLike()}`);
  5. } catch (e) {
  6. console.error(`duplicated calls should be ok.code is ${e.code},message is ${e.message}`);
  7. }

getSqlLike

getSqlLike():string

獲取Query對象的查詢語句。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

string

返回一個字段列中包含對應子串的結果。

示例:

  1. try {
  2. let query = new distributedKVStore.Query();
  3. let sql1 = query.getSqlLike();
  4. console.info(`GetSqlLike sql= ${sql1}`);
  5. } catch (e) {
  6. console.error("duplicated calls should be ok : " + e);
  7. }

SingleKVStore

SingleKVStore數(shù)據(jù)庫實例,提供增加數(shù)據(jù)、刪除數(shù)據(jù)和訂閱數(shù)據(jù)變更、訂閱數(shù)據(jù)同步完成的方法。

在調用SingleKVStore的方法前,需要先通過getKVStore構建一個SingleKVStore實例。

put

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

添加指定類型鍵值對到數(shù)據(jù)庫,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

key

string

要添加數(shù)據(jù)的key,不能為空且長度不大于MAX_KEY_LENGTH。

value

Uint8Array | string | number | boolean

要添加數(shù)據(jù)的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的長度不大于MAX_VALUE_LENGTH。

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
  5. if (err != undefined) {
  6. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  7. return;
  8. }
  9. console.info("Succeeded in putting");
  10. });
  11. } catch (e) {
  12. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  13. }

put

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

添加指定類型鍵值對到數(shù)據(jù)庫,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

key

string

要添加數(shù)據(jù)的key,不能為空且長度不大于MAX_KEY_LENGTH。

value

Uint8Array | string | number | boolean

要添加數(shù)據(jù)的value,支持Uint8Array、number 、 string 、boolean,Uint8Array、string 的長度不大于MAX_VALUE_LENGTH。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(() => {
  5. console.info(`Succeeded in putting data.`);
  6. }).catch((err) => {
  7. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  8. });
  9. } catch (e) {
  10. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  11. }

putBatch

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

批量插入鍵值對到SingleKVStore數(shù)據(jù)庫中,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

entries

Entry[]

表示要批量插入的鍵值對。一個entries對象中允許的最大條目個數(shù)為128個。

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. console.info(`entries: ${entries}`);
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put Batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting Batch');
  21. kvStore.getEntries('batch_test_string_key', function (err, entries) {
  22. if (err != undefined) {
  23. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  24. }
  25. console.info('Succeeded in getting Entries');
  26. console.info(`entries.length: ${entries.length}`);
  27. console.info(`entries[0]: ${entries[0]}`);
  28. });
  29. });
  30. } catch (e) {
  31. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `);
  32. }

putBatch

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

批量插入鍵值對到SingleKVStore數(shù)據(jù)庫中,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

entries

Entry[]

表示要批量插入的鍵值對。一個entries對象中允許的最大條目個數(shù)為128個。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. console.info(`entries: ${entries}`);
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting Batch');
  17. kvStore.getEntries('batch_test_string_key').then((entries) => {
  18. console.info('Succeeded in getting Entries');
  19. console.info(`PutBatch ${entries}`);
  20. }).catch((err) => {
  21. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  22. });
  23. }).catch((err) => {
  24. console.error(`Failed to put Batch.code is ${err.code},message is ${err.message}`);
  25. });
  26. } catch (e) {
  27. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `);
  28. }

delete

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

從數(shù)據(jù)庫中刪除指定鍵值的數(shù)據(jù),使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

key

string

要刪除數(shù)據(jù)的key,不能為空且長度不大于MAX_KEY_LENGTH。

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
  5. if (err != undefined) {
  6. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  7. return;
  8. }
  9. console.info('Succeeded in putting');
  10. kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err) {
  11. if (err != undefined) {
  12. console.error(`Failed to delete.code is ${err.code},message is ${err.message}`);
  13. return;
  14. }
  15. console.info('Succeeded in deleting');
  16. });
  17. });
  18. } catch (e) {
  19. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  20. }

delete

delete(key: string): Promise<void>

從數(shù)據(jù)庫中刪除指定鍵值的數(shù)據(jù),使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

key

string

要刪除數(shù)據(jù)的key,不能為空且長度不大于MAX_KEY_LENGTH。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(() => {
  5. console.info(`Succeeded in putting data`);
  6. kvStore.delete(KEY_TEST_STRING_ELEMENT).then(() => {
  7. console.info('Succeeded in deleting');
  8. }).catch((err) => {
  9. console.error(`Failed to delete.code is ${err.code},message is ${err.message}`);
  10. });
  11. }).catch((err) => {
  12. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  13. });
  14. } catch (e) {
  15. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  16. }

deleteBatch

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

批量刪除SingleKVStore數(shù)據(jù)庫中的鍵值對,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keys

string[]

表示要批量刪除的鍵值對。

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. let keys = [];
  4. for (var i = 0; i < 5; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. keys.push(key + i);
  15. }
  16. console.info(`entries: ${entries}`);
  17. kvStore.putBatch(entries, async function (err) {
  18. if (err != undefined) {
  19. console.error(`Failed to put Batch.code is ${err.code},message is ${err.message}`);
  20. return;
  21. }
  22. console.info('Succeeded in putting Batch');
  23. kvStore.deleteBatch(keys, async function (err) {
  24. if (err != undefined) {
  25. console.error(`Failed to delete Batch.code is ${err.code},message is ${err.message}`);
  26. return;
  27. }
  28. console.info('Succeeded in deleting Batch');
  29. });
  30. });
  31. } catch (e) {
  32. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  33. }

deleteBatch

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

批量刪除SingleKVStore數(shù)據(jù)庫中的鍵值對,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keys

string[]

表示要批量刪除的鍵值對。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. let keys = [];
  4. for (var i = 0; i < 5; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. keys.push(key + i);
  15. }
  16. console.info(`entries: ${entries}`);
  17. kvStore.putBatch(entries).then(async () => {
  18. console.info('Succeeded in putting Batch');
  19. kvStore.deleteBatch(keys).then(() => {
  20. console.info('Succeeded in deleting Batch');
  21. }).catch((err) => {
  22. console.error(`Failed to delete Batch.code is ${err.code},message is ${err.message}`);
  23. });
  24. }).catch((err) => {
  25. console.error(`Failed to put Batch.code is ${err.code},message is ${err.message}`);
  26. });
  27. } catch (e) {
  28. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  29. }

removeDeviceData

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

刪除指定設備的數(shù)據(jù),使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

表示要刪除設備的名稱。

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err) {
  5. console.info('Succeeded in putting data');
  6. const deviceId = 'no_exist_device_id';
  7. kvStore.removeDeviceData(deviceId, async function (err) {
  8. if (err == undefined) {
  9. console.info('succeeded in removing device data');
  10. } else {
  11. console.error(`Failed to remove device data.code is ${err.code},message is ${err.message} `);
  12. kvStore.get(KEY_TEST_STRING_ELEMENT, async function (err, data) {
  13. console.info('Succeeded in getting data');
  14. });
  15. }
  16. });
  17. });
  18. } catch (e) {
  19. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`)
  20. }

removeDeviceData

removeDeviceData(deviceId: string): Promise<void>

刪除指定設備的數(shù)據(jù),使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

表示要刪除設備的名稱。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-string-001';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(() => {
  5. console.info('Succeeded in putting data');
  6. }).catch((err) => {
  7. console.error(`Failed to put data.code is ${err.code},message is ${err.message} `);
  8. });
  9. const deviceId = 'no_exist_device_id';
  10. kvStore.removeDeviceData(deviceId).then(() => {
  11. console.info('succeeded in removing device data');
  12. }).catch((err) => {
  13. console.error(`Failed to remove device data.code is ${err.code},message is ${err.message} `);
  14. });
  15. kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
  16. console.info('Succeeded in getting data');
  17. }).catch((err) => {
  18. console.error(`Failed to get data.code is ${err.code},message is ${err.message} `);
  19. });
  20. } catch (e) {
  21. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`)
  22. }

get

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

獲取指定鍵的值,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

key

string

要查詢數(shù)據(jù)的key,不能為空且長度不大于MAX_KEY_LENGTH。

callback

AsyncCallback<boolean | string | number | Uint8Array>

回調函數(shù)。返回獲取查詢的值。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100004

Not found.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
  5. if (err != undefined) {
  6. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  7. return;
  8. }
  9. console.info("Succeeded in putting");
  10. kvStore.get(KEY_TEST_STRING_ELEMENT, function (err, data) {
  11. if (err != undefined) {
  12. console.error(`Failed to get.code is ${err.code},message is ${err.message}`);
  13. return;
  14. }
  15. console.info(`Succeeded in getting data.data=${data}`);
  16. });
  17. });
  18. } catch (e) {
  19. console.error(`Failed to get.code is ${e.code},message is ${e.message}`);
  20. }

get

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

獲取指定鍵的值,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

key

string

要查詢數(shù)據(jù)的key,不能為空且長度不大于MAX_KEY_LENGTH。

返回值:

類型

說明

Promise<Uint8Array | string | boolean | number>

Promise對象。返回獲取查詢的值。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100004

Not found.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(() => {
  5. console.info(`Succeeded in putting data`);
  6. kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
  7. console.info(`Succeeded in getting data.data=${data}`);
  8. }).catch((err) => {
  9. console.error(`Failed to get.code is ${err.code},message is ${err.message}`);
  10. });
  11. }).catch((err) => {
  12. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  13. });
  14. } catch (e) {
  15. console.error(`Failed to get.code is ${e.code},message is ${e.message}`);
  16. }

getEntries

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

獲取匹配指定鍵前綴的所有鍵值對,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keyPrefix

string

表示要匹配的鍵前綴。

callback

AsyncCallback<Entry[]>

回調函數(shù)。返回匹配指定前綴的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. console.info(`entries: ${entries}`);
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put Batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting Batch');
  21. kvStore.getEntries('batch_test_string_key', function (err, entries) {
  22. if (err != undefined) {
  23. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  24. return;
  25. }
  26. console.info('Succeeded in getting Entries');
  27. console.info(`entries.length: ${entries.length}`);
  28. console.info(`entries[0]: ${entries[0]}`);
  29. });
  30. });
  31. } catch (e) {
  32. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `);
  33. }

getEntries

getEntries(keyPrefix: string): Promise<Entry[]>

獲取匹配指定鍵前綴的所有鍵值對,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keyPrefix

string

表示要匹配的鍵前綴。

返回值:

類型

說明

Promise<Entry[]>

Promise對象。返回匹配指定前綴的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. console.info(`entries: ${entries}`);
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting Batch');
  17. kvStore.getEntries('batch_test_string_key').then((entries) => {
  18. console.info('Succeeded in getting Entries');
  19. console.info(`PutBatch ${entries}`);
  20. }).catch((err) => {
  21. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  22. });
  23. }).catch((err) => {
  24. console.error(`Failed to put Batch.code is ${err.code},message is ${err.message}`);
  25. });
  26. } catch (e) {
  27. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `);
  28. }

getEntries

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

獲取與指定Query對象匹配的鍵值對列表,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示要匹配的鍵前綴。

callback

AsyncCallback<Entry[]>

回調函數(shù)。返回與指定Query對象匹配的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. var arr = new Uint8Array([21, 31]);
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_bool_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.BYTE_ARRAY,
  10. value: arr
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. console.info(`entries: {entries}`);
  16. kvStore.putBatch(entries, async function (err) {
  17. console.info('Succeeded in putting Batch');
  18. const query = new distributedKVStore.Query();
  19. query.prefixKey("batch_test");
  20. kvStore.getEntries(query, function (err, entries) {
  21. if (err != undefined) {
  22. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  23. return;
  24. }
  25. console.info('Succeeded in getting Entries');
  26. console.info(`entries.length: ${entries.length}`);
  27. console.info(`entries[0]: ${entries[0]}`);
  28. });
  29. });
  30. } catch (e) {
  31. console.error(`Failed to get Entries.code is ${e.code},message is ${e.message}`);
  32. }

getEntries

getEntries(query: Query): Promise<Entry[]>

獲取與指定Query對象匹配的鍵值對列表,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<Entry[]>

Promise對象。返回與指定Query對象匹配的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. var arr = new Uint8Array([21, 31]);
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_bool_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.BYTE_ARRAY,
  10. value: arr
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. console.info(`entries: {entries}`);
  16. kvStore.putBatch(entries).then(async () => {
  17. console.info('Succeeded in putting Batch');
  18. const query = new distributedKVStore.Query();
  19. query.prefixKey("batch_test");
  20. kvStore.getEntries(query).then((entries) => {
  21. console.info('Succeeded in getting Entries');
  22. }).catch((err) => {
  23. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  24. });
  25. }).catch((err) => {
  26. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`)
  27. });
  28. console.info('Succeeded in getting Entries');
  29. } catch (e) {
  30. console.error(`Failed to get Entries.code is ${e.code},message is ${e.message}`);
  31. }

getResultSet

getResultSet(keyPrefix: string, callback: AsyncCallback<KVStoreResultSet>): void

從SingleKVStore數(shù)據(jù)庫中獲取具有指定前綴的結果集,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keyPrefix

string

表示要匹配的鍵前綴。

callback

AsyncCallback<KVStoreResultSet>

回調函數(shù)。返回具有指定前綴的結果集。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting batch');
  21. kvStore.getResultSet('batch_test_string_key', async function (err, result) {
  22. if (err != undefined) {
  23. console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`);
  24. return;
  25. }
  26. console.info('Succeeded in getting result set');
  27. resultSet = result;
  28. kvStore.closeResultSet(resultSet, function (err) {
  29. if (err != undefined) {
  30. console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`);
  31. return;
  32. }
  33. console.info('Succeeded in closing result set');
  34. })
  35. });
  36. });
  37. } catch (e) {
  38. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  39. }

getResultSet

getResultSet(keyPrefix: string): Promise<KVStoreResultSet>

從SingleKVStore數(shù)據(jù)庫中獲取具有指定前綴的結果集,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keyPrefix

string

表示要匹配的鍵前綴。

返回值:

類型

說明

Promise<KVStoreResultSet>

Promise對象。返回具有指定前綴的結果集。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting batch');
  17. }).catch((err) => {
  18. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  19. });
  20. kvStore.getResultSet('batch_test_string_key').then((result) => {
  21. console.info('Succeeded in getting result set');
  22. resultSet = result;
  23. }).catch((err) => {
  24. console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`);
  25. });
  26. kvStore.closeResultSet(resultSet).then(() => {
  27. console.info('Succeeded in closing result set');
  28. }).catch((err) => {
  29. console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`);
  30. });
  31. } catch (e) {
  32. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  33. }

getResultSet

getResultSet(query: Query, callback: AsyncCallback<KVStoreResultSet>): void

獲取與指定Query對象匹配的KVStoreResultSet對象,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

callback

AsyncCallback<KVStoreResultSet>

回調函數(shù),獲取與指定Query對象匹配的KVStoreResultSet對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting batch');
  21. const query = new distributedKVStore.Query();
  22. query.prefixKey("batch_test");
  23. kvStore.getResultSet(query, async function (err, result) {
  24. if (err != undefined) {
  25. console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`);
  26. return;
  27. }
  28. console.info('Succeeded in getting result set');
  29. });
  30. });
  31. } catch (e) {
  32. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  33. }

getResultSet

getResultSet(query: Query): Promise<KVStoreResultSet>

獲取與指定Query對象匹配的KVStoreResultSet對象,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<KVStoreResultSet>

Promise對象。獲取與指定Query對象匹配的KVStoreResultSet對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting batch');
  17. }).catch((err) => {
  18. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  19. });
  20. const query = new distributedKVStore.Query();
  21. query.prefixKey("batch_test");
  22. kvStore.getResultSet(query).then((result) => {
  23. console.info('Succeeded in getting result set');
  24. resultSet = result;
  25. }).catch((err) => {
  26. console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`);
  27. });
  28. } catch (e) {
  29. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  30. }

closeResultSet

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

關閉由SingleKvStore.getResultSet返回的KVStoreResultSet對象,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

resultSet

KVStoreResultSet

表示要關閉的KVStoreResultSet對象。

callback

AsyncCallback<void>

回調函數(shù)。

示例:

  1. try {
  2. let resultSet = null;
  3. kvStore.closeResultSet(resultSet, function (err) {
  4. if (err == undefined) {
  5. console.info('Succeeded in closing result set');
  6. } else {
  7. console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`);
  8. }
  9. });
  10. } catch (e) {
  11. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  12. }

closeResultSet

closeResultSet(resultSet: KVStoreResultSet): Promise<void>

關閉由SingleKvStore.getResultSet返回的KVStoreResultSet對象,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

resultSet

KVStoreResultSet

表示要關閉的KVStoreResultSet對象。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. try {
  2. let resultSet = null;
  3. kvStore.closeResultSet(resultSet).then(() => {
  4. console.info('Succeeded in closing result set');
  5. }).catch((err) => {
  6. console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`);
  7. });
  8. } catch (e) {
  9. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  10. }

getResultSize

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

獲取與指定Query對象匹配的結果數(shù),使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

callback

AsyncCallback<number>

回調函數(shù)。返回與指定Query對象匹配的結果數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. kvStore.putBatch(entries, async function (err) {
  15. console.info('Succeeded in putting batch');
  16. const query = new distributedKVStore.Query();
  17. query.prefixKey("batch_test");
  18. kvStore.getResultSize(query, async function (err, resultSize) {
  19. if (err != undefined) {
  20. console.error(`Failed to get result size.code is ${err.code},message is ${err.message}`);
  21. return;
  22. }
  23. console.info('Succeeded in getting result set size');
  24. });
  25. });
  26. } catch (e) {
  27. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  28. }

getResultSize

getResultSize(query: Query): Promise<number>

獲取與指定Query對象匹配的結果數(shù),使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<number>

Promise對象。獲取與指定QuerV9對象匹配的結果數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. kvStore.putBatch(entries).then(async () => {
  15. console.info('Succeeded in putting batch');
  16. }).catch((err) => {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. });
  19. const query = new distributedKVStore.Query();
  20. query.prefixKey("batch_test");
  21. kvStore.getResultSize(query).then((resultSize) => {
  22. console.info('Succeeded in getting result set size');
  23. }).catch((err) => {
  24. console.error(`Failed to get result size.code is ${err.code},message is ${err.message}`);
  25. });
  26. } catch (e) {
  27. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  28. }

backup

backup(file:string, callback: AsyncCallback<void>):void

以指定名稱備份數(shù)據(jù)庫,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

file

string

備份數(shù)據(jù)庫的指定名稱,不能為空且長度不大于MAX_KEY_LENGTH。

callback

AsyncCallback<void>

回調函數(shù)。當以指定名稱備份數(shù)據(jù)庫成功,err為undefined,否則為錯誤對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. let file = "BK001";
  2. try {
  3. kvStore.backup(file, (err) => {
  4. if (err) {
  5. console.error(`Failed to backup.code is ${err.code},message is ${err.message} `);
  6. } else {
  7. console.info(`Succeeded in backupping data.`);
  8. }
  9. });
  10. } catch (e) {
  11. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  12. }

backup

backup(file:string): Promise<void>

以指定名稱備份數(shù)據(jù)庫,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

file

string

備份數(shù)據(jù)庫的指定名稱,不能為空且長度不大于MAX_KEY_LENGTH。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. let file = "BK001";
  2. try {
  3. kvStore.backup(file).then(() => {
  4. console.info(`Succeeded in backupping data.`);
  5. }).catch((err) => {
  6. console.error(`Failed to backup.code is ${err.code},message is ${err.message}`);
  7. });
  8. } catch (e) {
  9. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  10. }

restore

restore(file:string, callback: AsyncCallback<void>):void

從指定的數(shù)據(jù)庫文件恢復數(shù)據(jù)庫,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

file

string

指定的數(shù)據(jù)庫文件名稱,不能為空且長度不大于MAX_KEY_LENGTH。

callback

AsyncCallback<void>

回調函數(shù)。當從指定的數(shù)據(jù)庫文件恢復數(shù)據(jù)庫成功,err為undefined,否則為錯誤對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. let file = "BK001";
  2. try {
  3. kvStore.restore(file, (err) => {
  4. if (err) {
  5. console.error(`Failed to restore.code is ${err.code},message is ${err.message}`);
  6. } else {
  7. console.info(`Succeeded in restoring data.`);
  8. }
  9. });
  10. } catch (e) {
  11. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  12. }

restore

restore(file:string): Promise<void>

從指定的數(shù)據(jù)庫文件恢復數(shù)據(jù)庫,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

file

string

指定的數(shù)據(jù)庫文件名稱,不能為空且長度不大于MAX_KEY_LENGTH。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. let file = "BK001";
  2. try {
  3. kvStore.restore(file).then(() => {
  4. console.info(`Succeeded in restoring data.`);
  5. }).catch((err) => {
  6. console.error(`Failed to restore.code is ${err.code},message is ${err.message}`);
  7. });
  8. } catch (e) {
  9. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  10. }

deleteBackup

deleteBackup(files:Array<string>, callback: AsyncCallback<Array<[string, number]>>):void

根據(jù)指定名稱刪除備份文件,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

files

Array<string>

刪除備份文件所指定的名稱,不能為空且長度不大于MAX_KEY_LENGTH

callback

AsyncCallback<Array<[string, number]>>

回調函數(shù),返回刪除備份的文件名及其處理結果。

示例:

  1. let files = ["BK001", "BK002"];
  2. try {
  3. kvStore.deleteBackup(files, (err, data) => {
  4. if (err) {
  5. console.error(`Failed to delete Backup.code is ${err.code},message is ${err.message}`);
  6. } else {
  7. console.info(`Succeed in deleting Backup.data=${data}`);
  8. }
  9. });
  10. } catch (e) {
  11. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  12. }

deleteBackup

deleteBackup(files:Array<string>): Promise<Array<[string, number]>>

根據(jù)指定名稱刪除備份文件,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

files

Array<string>

刪除備份文件所指定的名稱,不能為空且長度不大于MAX_KEY_LENGTH

返回值:

類型

說明

Promise<Array<[string, number]>>

Promise對象,返回刪除備份的文件名及其處理結果。

示例:

  1. let files = ["BK001", "BK002"];
  2. try {
  3. kvStore.deleteBackup(files).then((data) => {
  4. console.info(`Succeed in deleting Backup.data=${data}`);
  5. }).catch((err) => {
  6. console.error(`Failed to delete Backup.code is ${err.code},message is ${err.message}`);
  7. })
  8. } catch (e) {
  9. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  10. }

startTransaction

startTransaction(callback: AsyncCallback<void>): void

啟動SingleKVStore數(shù)據(jù)庫中的事務,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. function putBatchString(len, prefix) {
  2. let entries = [];
  3. for (var i = 0; i < len; i++) {
  4. var entry = {
  5. key: prefix + i,
  6. value: {
  7. type: distributedKVStore.ValueType.STRING,
  8. value: 'batch_test_string_value'
  9. }
  10. }
  11. entries.push(entry);
  12. }
  13. return entries;
  14. }
  15. try {
  16. var count = 0;
  17. kvStore.on('dataChange', 0, function (data) {
  18. console.info(`startTransaction 0 ${data}`);
  19. count++;
  20. });
  21. kvStore.startTransaction(async function (err) {
  22. if (err != undefined) {
  23. console.error(`Failed to start Transaction.code is ${err.code},message is ${err.message}`);
  24. return;
  25. }
  26. console.info('Succeeded in starting Transaction');
  27. let entries = putBatchString(10, 'batch_test_string_key');
  28. console.info(`entries: ${entries}`);
  29. kvStore.putBatch(entries, async function (err) {
  30. if (err != undefined) {
  31. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  32. return;
  33. }
  34. console.info('Succeeded in putting Batch');
  35. });
  36. });
  37. } catch (e) {
  38. console.error(`Failed to start Transaction.code is ${e.code},message is ${e.message}`);
  39. }

startTransaction

startTransaction(): Promise<void>

啟動SingleKVStore數(shù)據(jù)庫中的事務,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. try {
  2. var count = 0;
  3. kvStore.on('dataChange', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_ALL, function (data) {
  4. console.info(`startTransaction 0 ${data}`);
  5. count++;
  6. });
  7. kvStore.startTransaction().then(async () => {
  8. console.info('Succeeded in starting Transaction');
  9. }).catch((err) => {
  10. console.error(`Failed to start Transaction.code is ${err.code},message is ${err.message}`);
  11. });
  12. } catch (e) {
  13. console.error(`Failed to start Transaction.code is ${e.code},message is ${e.message}`);
  14. }

commit

commit(callback: AsyncCallback<void>): void

提交SingleKVStore數(shù)據(jù)庫中的事務,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. try {
  2. kvStore.commit(function (err) {
  3. if (err == undefined) {
  4. console.info('Succeeded in committing');
  5. } else {
  6. console.error(`Failed to commit.code is ${err.code},message is ${err.message}`);
  7. }
  8. });
  9. } catch (e) {
  10. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  11. }

commit

commit(): Promise<void>

提交SingleKVStore數(shù)據(jù)庫中的事務,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. try {
  2. kvStore.commit().then(async () => {
  3. console.info('Succeeded in committing');
  4. }).catch((err) => {
  5. console.error(`Failed to commit.code is ${err.code},message is ${err.message}`);
  6. });
  7. } catch (e) {
  8. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  9. }

rollback

rollback(callback: AsyncCallback<void>): void

在SingleKVStore數(shù)據(jù)庫中回滾事務,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. try {
  2. kvStore.rollback(function (err) {
  3. if (err == undefined) {
  4. console.info('Succeeded in rolling back');
  5. } else {
  6. console.error(`Failed to rollback.code is ${err.code},message is ${err.message}`);
  7. }
  8. });
  9. }catch(e) {
  10. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  11. }

rollback

rollback(): Promise<void>

在SingleKVStore數(shù)據(jù)庫中回滾事務,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. try {
  2. kvStore.rollback().then(async () => {
  3. console.info('Succeeded in rolling back');
  4. }).catch((err) => {
  5. console.error(`Failed to rollback.code is ${err.code},message is ${err.message}`);
  6. });
  7. } catch (e) {
  8. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  9. }

enableSync

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

設定是否開啟同步,使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

enabled

boolean

設定是否開啟同步,true表示開啟同步,false表示不啟用同步。

callback

AsyncCallback<void>

回調函數(shù)。

示例:

  1. try {
  2. kvStore.enableSync(true, function (err) {
  3. if (err == undefined) {
  4. console.info('Succeeded in enabling sync');
  5. } else {
  6. console.error(`Failed to enable sync.code is ${err.code},message is ${err.message}`);
  7. }
  8. });
  9. } catch (e) {
  10. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  11. }

enableSync

enableSync(enabled: boolean): Promise<void>

設定是否開啟同步,使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

enabled

boolean

設定是否開啟同步,true表示開啟同步,false表示不啟用同步。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. try {
  2. kvStore.enableSync(true).then(() => {
  3. console.info('Succeeded in enabling sync');
  4. }).catch((err) => {
  5. console.error(`Failed to enable sync.code is ${err.code},message is ${err.message}`);
  6. });
  7. } catch (e) {
  8. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  9. }

setSyncRange

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

設置同步范圍標簽,使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

localLabels

string[]

表示本地設備的同步標簽。

remoteSupportLabels

string[]

表示要同步數(shù)據(jù)的設備的同步標簽。

callback

AsyncCallback<void>

回調函數(shù)。

示例:

  1. try {
  2. const localLabels = ['A', 'B'];
  3. const remoteSupportLabels = ['C', 'D'];
  4. kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err) {
  5. if (err != undefined) {
  6. console.error(`Failed to set syncRange.code is ${err.code},message is ${err.message}`);
  7. return;
  8. }
  9. console.info('Succeeded in setting syncRange');
  10. });
  11. } catch (e) {
  12. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  13. }

setSyncRange

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

設置同步范圍標簽,使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

localLabels

string[]

表示本地設備的同步標簽。

remoteSupportLabels

string[]

表示要同步數(shù)據(jù)的設備的同步標簽。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. try {
  2. const localLabels = ['A', 'B'];
  3. const remoteSupportLabels = ['C', 'D'];
  4. kvStore.setSyncRange(localLabels, remoteSupportLabels).then(() => {
  5. console.info('Succeeded in setting syncRange');
  6. }).catch((err) => {
  7. console.error(`Failed to set syncRange.code is ${err.code},message is ${err.message}`);
  8. });
  9. } catch (e) {
  10. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  11. }

setSyncParam

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

設置數(shù)據(jù)庫同步允許的默認延遲,使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

defaultAllowedDelayMs

number

表示數(shù)據(jù)庫同步允許的默認延遲,以毫秒為單位。

callback

AsyncCallback<void>

回調函數(shù)。

示例:

  1. try {
  2. const defaultAllowedDelayMs = 500;
  3. kvStore.setSyncParam(defaultAllowedDelayMs, function (err) {
  4. if (err != undefined) {
  5. console.error(`Failed to set syncParam.code is ${err.code},message is ${err.message}`);
  6. return;
  7. }
  8. console.info('Succeeded in setting syncParam');
  9. });
  10. } catch (e) {
  11. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  12. }

setSyncParam

setSyncParam(defaultAllowedDelayMs: number): Promise<void>

設置數(shù)據(jù)庫同步允許的默認延遲,使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

defaultAllowedDelayMs

number

表示數(shù)據(jù)庫同步允許的默認延遲,以毫秒為單位。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. try {
  2. const defaultAllowedDelayMs = 500;
  3. kvStore.setSyncParam(defaultAllowedDelayMs).then(() => {
  4. console.info('Succeeded in setting syncParam');
  5. }).catch((err) => {
  6. console.error(`Failed to set syncParam.code is ${err.code},message is ${err.message}`);
  7. });
  8. } catch (e) {
  9. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  10. }

sync

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

在手動同步方式下,觸發(fā)數(shù)據(jù)庫同步。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

需要權限: ohos.permission.DISTRIBUTED_DATASYNC。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

deviceIds

string[]

同一組網(wǎng)環(huán)境下,需要同步的設備的deviceId列表。

mode

SyncMode

同步模式。

delayMs

number

可選參數(shù),允許延時時間,單位:ms(毫秒),默認為0。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100004

Not found.

示例:

  1. const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
  2. const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
  3. try {
  4. kvStore.on('syncComplete', function (data) {
  5. console.info('Sync dataChange');
  6. });
  7. kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err) {
  8. if (err != undefined) {
  9. console.error(`Failed to sync.code is ${err.code},message is ${err.message}`);
  10. return;
  11. }
  12. console.info('Succeeded in putting data');
  13. const deviceIds = ['deviceList'];
  14. const mode = distributedKVStore.SyncMode.PULL_ONLY;
  15. kvStore.sync(deviceIds, mode, 1000);
  16. });
  17. } catch (e) {
  18. console.error(`Failed to sync.code is ${e.code},message is ${e.message}`);
  19. }

sync

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

在手動同步方式下,觸發(fā)數(shù)據(jù)庫同步,此方法為同步方法。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

需要權限: ohos.permission.DISTRIBUTED_DATASYNC。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

deviceIds

string[]

同一組網(wǎng)環(huán)境下,需要同步的設備的deviceId列表。

mode

SyncMode

同步模式。

query

Query

表示數(shù)據(jù)庫的查詢謂詞條件

delayMs

number

可選參數(shù),允許延時時間,單位:ms(毫秒)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100004

Not found.

示例:

  1. const KEY_TEST_SYNC_ELEMENT = 'key_test_sync';
  2. const VALUE_TEST_SYNC_ELEMENT = 'value-string-001';
  3. try {
  4. kvStore.on('syncComplete', function (data) {
  5. console.info('Sync dataChange');
  6. });
  7. kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err) {
  8. if (err != undefined) {
  9. console.error(`Failed to sync.code is ${err.code},message is ${err.message}`);
  10. return;
  11. }
  12. console.info('Succeeded in putting data');
  13. const deviceIds = ['deviceList'];
  14. const mode = distributedKVStore.SyncMode.PULL_ONLY;
  15. const query = new distributedKVStore.Query();
  16. query.prefixKey("batch_test");
  17. query.deviceId('localDeviceId');
  18. kvStore.sync(deviceIds, query, mode, 1000);
  19. });
  20. } catch (e) {
  21. console.error(`Failed to sync.code is ${e.code},message is ${e.message}`);
  22. }

on('dataChange')

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

訂閱指定類型的數(shù)據(jù)變更通知。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

event

string

訂閱的事件名,固定為'dataChange',表示數(shù)據(jù)變更事件。

type

SubscribeType

表示訂閱的類型。

listener

Callback<ChangeNotification>

回調函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100001

Over max subscribe limits.

15100005

Database or result set already closed.

示例:

  1. try {
  2. kvStore.on('dataChange', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) {
  3. console.info(`dataChange callback call data: ${data}`);
  4. });
  5. } catch (e) {
  6. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  7. }

on('syncComplete')

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

訂閱同步完成事件回調通知。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

event

string

訂閱的事件名,固定為'syncComplete',表示同步完成事件。

syncCallback

Callback<Array<[string, number]>>

回調函數(shù)。用于向調用方發(fā)送同步結果的回調。

示例:

  1. const KEY_TEST_FLOAT_ELEMENT = 'key_test_float';
  2. const VALUE_TEST_FLOAT_ELEMENT = 321.12;
  3. try {
  4. kvStore.on('syncComplete', function (data) {
  5. console.info(`syncComplete ${data}`);
  6. });
  7. kvStore.put(KEY_TEST_FLOAT_ELEMENT, VALUE_TEST_FLOAT_ELEMENT).then(() => {
  8. console.info('succeeded in putting');
  9. }).catch((err) => {
  10. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  11. });
  12. } catch (e) {
  13. console.error(`Failed to subscribe syncComplete.code is ${e.code},message is ${e.message}`);
  14. }

off('dataChange')

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

取消訂閱數(shù)據(jù)變更通知。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

event

string

取消訂閱的事件名,固定為'dataChange',表示數(shù)據(jù)變更事件。

listener

Callback<ChangeNotification>

取消訂閱的函數(shù)。如不設置callback,則取消所有已訂閱的函數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. class KvstoreModel {
  2. call(data) {
  3. console.info(`dataChange : ${data}`);
  4. }
  5. subscribeDataChange() {
  6. try {
  7. if (kvStore != null) {
  8. kvStore.on('dataChange', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
  9. }
  10. } catch (err) {
  11. console.error(`Failed to subscribeDataChange.code is ${err.code},message is ${err.message}`);
  12. }
  13. }
  14. unsubscribeDataChange() {
  15. try {
  16. if (kvStore != null) {
  17. kvStore.off('dataChange', this.call);
  18. }
  19. } catch (err) {
  20. console.error(`Failed to unsubscribeDataChange.code is ${err.code},message is ${err.message}`);
  21. }
  22. }
  23. }

off('syncComplete')

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

取消訂閱同步完成事件回調通知。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

event

string

取消訂閱的事件名,固定為'syncComplete',表示同步完成事件。

syncCallback

Callback<Array<[string, number]>>

取消訂閱的函數(shù)。如不設置callback,則取消所有已訂閱的函數(shù)。

示例:

  1. class KvstoreModel {
  2. call(data) {
  3. console.info(`syncComplete : ${data}`);
  4. }
  5. subscribeDataChange() {
  6. try {
  7. if (kvStore != null) {
  8. kvStore.on('syncComplete', distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
  9. }
  10. } catch (err) {
  11. console.error(`Failed to subscribeDataChange.code is ${err.code},message is ${err.message}`);
  12. }
  13. }
  14. unsubscribeDataChange() {
  15. try {
  16. if (kvStore != null) {
  17. kvStore.off('dsyncComplete', this.call);
  18. }
  19. } catch (err) {
  20. console.error(`Failed to unsubscribeDataChange.code is ${err.code},message is ${err.message}`);
  21. }
  22. }
  23. }

getSecurityLevel

getSecurityLevel(callback: AsyncCallback<SecurityLevel>): void

獲取數(shù)據(jù)庫的安全級別,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<SecurityLevel>

回調函數(shù)。返回數(shù)據(jù)庫的安全級別。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. try {
  2. kvStore.getSecurityLevel(function (err, data) {
  3. if (err != undefined) {
  4. console.error(`Failed to get SecurityLevel.code is ${err.code},message is ${err.message}`);
  5. return;
  6. }
  7. console.info('Succeeded in getting securityLevel');
  8. });
  9. } catch (e) {
  10. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  11. }

getSecurityLevel

getSecurityLevel(): Promise<SecurityLevel>

獲取數(shù)據(jù)庫的安全級別,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

返回值:

類型

說明

Promise<SecurityLevel>

Promise對象。返回數(shù)據(jù)庫的安全級別。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100005

Database or result set already closed.

示例:

  1. try {
  2. kvStore.getSecurityLevel().then((data) => {
  3. console.info('Succeeded in getting securityLevel');
  4. }).catch((err) => {
  5. console.error(`Failed to get SecurityLevel.code is ${err.code},message is ${err.message}`);
  6. });
  7. } catch (e) {
  8. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  9. }

DeviceKVStore

設備協(xié)同數(shù)據(jù)庫,繼承自SingleKVStore,提供查詢數(shù)據(jù)和同步數(shù)據(jù)的方法。

設備協(xié)同數(shù)據(jù)庫,以設備維度對數(shù)據(jù)進行區(qū)分,每臺設備僅能寫入和修改本設備的數(shù)據(jù),其它設備的數(shù)據(jù)對其是只讀的,無法修改其它設備的數(shù)據(jù)。

比如,可以使用設備協(xié)同數(shù)據(jù)庫實現(xiàn)設備間的圖片分享,可以查看其他設備的圖片,但無法修改和刪除其他設備的圖片。

在調用DeviceKVStore的方法前,需要先通過getKVStore構建一個DeviceKVStore實例。

get

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

獲取本設備指定鍵的值,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

key

string

要查詢數(shù)據(jù)的key,不能為空且長度不大于MAX_KEY_LENGTH。

callback

AsyncCallback<boolean | string | number | Uint8Array>

回調函數(shù)。返回獲取查詢的值。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100004

Not found.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) {
  5. if (err != undefined) {
  6. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  7. return;
  8. }
  9. console.info("Succeeded in putting");
  10. kvStore.get(KEY_TEST_STRING_ELEMENT, function (err, data) {
  11. if (err != undefined) {
  12. console.error(`Failed to get.code is ${err.code},message is ${err.message}`);
  13. return;
  14. }
  15. console.info(`Succeeded in getting data.data=${data}`);
  16. });
  17. });
  18. } catch (e) {
  19. console.error(`Failed to get.code is ${e.code},message is ${e.message}`);
  20. }

get

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

獲取本設備指定鍵的值,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

key

string

要查詢數(shù)據(jù)的key,不能為空且長度不大于MAX_KEY_LENGTH。

返回值:

類型

說明

Promise<Uint8Array | string | boolean | number>

Promise對象。返回獲取查詢的值。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100004

Not found.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-test-string';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(() => {
  5. console.info(`Succeeded in putting data.data=${data}`);
  6. kvStore.get(KEY_TEST_STRING_ELEMENT).then((data) => {
  7. console.info(`Succeeded in getting data.data=${data}`);
  8. }).catch((err) => {
  9. console.error(`Failed to get.code is ${err.code},message is ${err.message}`);
  10. });
  11. }).catch((err) => {
  12. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  13. });
  14. } catch (e) {
  15. console.error(`Failed to get.code is ${e.code},message is ${e.message}`);
  16. }

get

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

獲取與指定設備ID和key匹配的string值,使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

標識要查詢其數(shù)據(jù)的設備。

key

string

表示要查詢key值的鍵。

callback

AsyncCallback<boolean|string|number|Uint8Array>

回調函數(shù),返回匹配給定條件的字符串值。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100004

Not found.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, async function (err) {
  5. if (err != undefined) {
  6. console.error(`Failed to put.code is ${err.code},message is ${err.message}`);
  7. return;
  8. }
  9. console.info('Succeeded in putting');
  10. kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT, function (err, data) {
  11. if (err != undefined) {
  12. console.error(`Failed to get.code is ${err.code},message is ${err.message}`);
  13. return;
  14. }
  15. console.info('Succeeded in getting');
  16. });
  17. })
  18. } catch (e) {
  19. console.error(`Failed to get.code is ${e.code},message is ${e.message}`);
  20. }

get

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

獲取與指定設備ID和key匹配的string值,使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

標識要查詢其數(shù)據(jù)的設備。

key

string

表示要查詢key值的鍵。

返回值:

類型

說明

Promise<boolean|string|number|Uint8Array>

Promise對象。返回匹配給定條件的字符串值。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100004

Not found.

15100005

Database or result set already closed.

示例:

  1. const KEY_TEST_STRING_ELEMENT = 'key_test_string_2';
  2. const VALUE_TEST_STRING_ELEMENT = 'value-string-002';
  3. try {
  4. kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(async () => {
  5. console.info('Succeeded in putting');
  6. kvStore.get('localDeviceId', KEY_TEST_STRING_ELEMENT).then((data) => {
  7. console.info('Succeeded in getting');
  8. }).catch((err) => {
  9. console.error(`Failed to get.code is ${err.code},message is ${err.message}`);
  10. });
  11. }).catch((error) => {
  12. console.error(`Failed to put.code is ${error.code},message is ${error.message}`);
  13. });
  14. } catch (e) {
  15. console.error(`Failed to get.code is ${e.code},message is ${e.message}`);
  16. }

getEntries

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

獲取匹配本設備指定鍵前綴的所有鍵值對,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keyPrefix

string

表示要匹配的鍵前綴。

callback

AsyncCallback<Entry[]>

回調函數(shù)。返回匹配指定前綴的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. console.info(`entries: ${entries}`);
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put Batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting Batch');
  21. kvStore.getEntries('batch_test_string_key', function (err, entries) {
  22. if (err != undefined) {
  23. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  24. return;
  25. }
  26. console.info('Succeeded in getting Entries');
  27. console.info(`entries.length: ${entries.length}`);
  28. console.info(`entries[0]: ${entries[0]}`);
  29. });
  30. });
  31. } catch (e) {
  32. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `);
  33. }

getEntries

getEntries(keyPrefix: string): Promise<Entry[]>

獲取匹配本設備指定鍵前綴的所有鍵值對,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keyPrefix

string

表示要匹配的鍵前綴。

返回值:

類型

說明

Promise<Entry[]>

Promise對象。返回匹配指定前綴的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. console.info(`entries: ${entries}`);
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting Batch');
  17. kvStore.getEntries('batch_test_string_key').then((entries) => {
  18. console.info('Succeeded in getting Entries');
  19. console.info(`PutBatch ${entries}`);
  20. }).catch((err) => {
  21. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  22. });
  23. }).catch((err) => {
  24. console.error(`Failed to put Batch.code is ${err.code},message is ${err.message}`);
  25. });
  26. } catch (e) {
  27. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message} `);
  28. }

getEntries

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

獲取與指定設備ID和key前綴匹配的所有鍵值對,使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

標識要查詢其數(shù)據(jù)的設備。

keyPrefix

string

表示要匹配的鍵前綴。

callback

AsyncCallback<Entry[]>

回調函數(shù),返回滿足給定條件的所有鍵值對的列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. console.info(`entries : ${entries}`);
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting batch');
  21. kvStore.getEntries('localDeviceId', 'batch_test_string_key', function (err, entries) {
  22. if (err != undefined) {
  23. console.error(`Failed to get entries.code is ${err.code},message is ${err.message}`);
  24. return;
  25. }
  26. console.info('Succeeded in getting entries');
  27. console.info(`entries.length: ${entries.length}`);
  28. console.info(`entries[0]: ${entries[0]}`);
  29. });
  30. });
  31. } catch (e) {
  32. console.error(`Failed to put batch.code is ${e.code},message is ${e.message}`);
  33. }

getEntries

getEntries(deviceId: string, keyPrefix: string): Promise<Entry[]>

獲取與指定設備ID和key前綴匹配的所有鍵值對,使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

標識要查詢其數(shù)據(jù)的設備。

keyPrefix

string

表示要匹配的鍵前綴。

返回值:

類型

說明

Promise<Entry[]>

Promise對象。返回匹配給定條件的所有鍵值對的列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. console.info(`entries: ${entries}`);
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting batch');
  17. kvStore.getEntries('localDeviceId', 'batch_test_string_key').then((entries) => {
  18. console.info('Succeeded in getting entries');
  19. console.info(`entries.length: ${entries.length}`);
  20. console.info(`entries[0]: ${entries[0]}`);
  21. console.info(`entries[0].value: ${entries[0].value}`);
  22. console.info(`entries[0].value.value: ${entries[0].value.value}`);
  23. }).catch((err) => {
  24. console.error(`Failed to get entries.code is ${err.code},message is ${err.message}`);
  25. });
  26. }).catch((err) => {
  27. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  28. });
  29. } catch (e) {
  30. console.error(`Failed to put batch.code is ${e.code},message is ${e.message}`);
  31. }

getEntries

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

獲取本設備與指定Query對象匹配的鍵值對列表,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示要匹配的鍵前綴。

callback

AsyncCallback<Entry[]>

回調函數(shù)。返回本設備與指定Query對象匹配的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. var arr = new Uint8Array([21, 31]);
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_bool_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.BYTE_ARRAY,
  10. value: arr
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. console.info(`entries: {entries}`);
  16. kvStore.putBatch(entries, async function (err) {
  17. console.info('Succeeded in putting Batch');
  18. const query = new distributedKVStore.Query();
  19. query.prefixKey("batch_test");
  20. kvStore.getEntries(query, function (err, entries) {
  21. if (err != undefined) {
  22. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  23. return;
  24. }
  25. console.info('Succeeded in getting Entries');
  26. console.info(`entries.length: ${entries.length}`);
  27. console.info(`entries[0]: ${entries[0]}`);
  28. });
  29. });
  30. } catch (e) {
  31. console.error(`Failed to get Entries.code is ${e.code},message is ${e.message}`);
  32. }

getEntries

getEntries(query: Query): Promise<Entry[]>

獲取本設備與指定Query對象匹配的鍵值對列表,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<Entry[]>

Promise對象。返回本設備與指定Query對象匹配的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. var arr = new Uint8Array([21, 31]);
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_bool_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.BYTE_ARRAY,
  10. value: arr
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. console.info(`entries: {entries}`);
  16. kvStore.putBatch(entries).then(async () => {
  17. console.info('Succeeded in putting Batch');
  18. const query = new distributedKVStore.Query();
  19. query.prefixKey("batch_test");
  20. kvStore.getEntries(query).then((entries) => {
  21. console.info('Succeeded in getting Entries');
  22. }).catch((err) => {
  23. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`);
  24. });
  25. }).catch((err) => {
  26. console.error(`Failed to get Entries.code is ${err.code},message is ${err.message}`)
  27. });
  28. console.info('Succeeded in getting Entries');
  29. } catch (e) {
  30. console.error(`Failed to get Entries.code is ${e.code},message is ${e.message}`);
  31. }

getEntries

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

獲取與指定設備ID和Query對象匹配的鍵值對列表,使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

鍵值對所屬的設備ID。

query

Query

表示查詢對象。

callback

AsyncCallback<Entry[]>

回調函數(shù)。返回與指定設備ID和Query對象匹配的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. var arr = new Uint8Array([21, 31]);
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_bool_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.BYTE_ARRAY,
  10. value: arr
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. console.info(`entries: ${entries}`);
  16. kvStore.putBatch(entries, async function (err) {
  17. if (err != undefined) {
  18. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  19. return;
  20. }
  21. console.info('Succeeded in putting batch');
  22. var query = new distributedKVStore.Query();
  23. query.deviceId('localDeviceId');
  24. query.prefixKey("batch_test");
  25. kvStore.getEntries('localDeviceId', query, function (err, entries) {
  26. if (err != undefined) {
  27. console.error(`Failed to get entries.code is ${err.code},message is ${err.message}`);
  28. return;
  29. }
  30. console.info('Succeeded in getting entries');
  31. console.info(`entries.length: ${entries.length}`);
  32. console.info(`entries[0]: ${entries[0]}`);
  33. })
  34. });
  35. console.info('Succeeded in getting entries');
  36. } catch (e) {
  37. console.error(`Failed to get entries.code is ${e.code},message is ${e.message}`);
  38. }

getEntries

getEntries(deviceId: string, query: Query): Promise<Entry[]>

獲取與指定設備ID和Query對象匹配的鍵值對列表,使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

鍵值對所屬的設備ID。

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<Entry[]>

Promise對象。返回與指定設備ID和Query對象匹配的鍵值對列表。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. var arr = new Uint8Array([21, 31]);
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_bool_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.BYTE_ARRAY,
  10. value: arr
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. console.info(`entries: ${entries}`);
  16. kvStore.putBatch(entries).then(async () => {
  17. console.info('Succeeded in putting batch');
  18. var query = new distributedKVStore.Query();
  19. query.deviceId('localDeviceId');
  20. query.prefixKey("batch_test");
  21. kvStore.getEntries('localDeviceId', query).then((entries) => {
  22. console.info('Succeeded in getting entries');
  23. }).catch((err) => {
  24. console.error(`Failed to get entries.code is ${err.code},message is ${err.message}`);
  25. });
  26. }).catch((err) => {
  27. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  28. });
  29. console.info('Succeeded in getting entries');
  30. } catch (e) {
  31. console.error(`Failed to get entries.code is ${e.code},message is ${e.message}`);
  32. }

getResultSet

getResultSet(keyPrefix: string, callback: AsyncCallback<KVStoreResultSet>): void

從DeviceKVStore數(shù)據(jù)庫中獲取本設備具有指定前綴的結果集,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keyPrefix

string

表示要匹配的鍵前綴。

callback

AsyncCallback<KVStoreResultSet>

回調函數(shù)。返回具有指定前綴的結果集。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting batch');
  21. kvStore.getResultSet('batch_test_string_key', async function (err, result) {
  22. if (err != undefined) {
  23. console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`);
  24. return;
  25. }
  26. console.info('Succeeded in getting result set');
  27. resultSet = result;
  28. kvStore.closeResultSet(resultSet, function (err) {
  29. if (err != undefined) {
  30. console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`);
  31. return;
  32. }
  33. console.info('Succeeded in closing result set');
  34. })
  35. });
  36. });
  37. } catch (e) {
  38. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.message}`);
  39. }

getResultSet

getResultSet(keyPrefix: string): Promise<KVStoreResultSet>

從DeviceKVStore數(shù)據(jù)庫中獲取本設備具有指定前綴的結果集,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

keyPrefix

string

表示要匹配的鍵前綴。

返回值:

類型

說明

Promise<KVStoreResultSet>

Promise對象。返回具有指定前綴的結果集。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting batch');
  17. }).catch((err) => {
  18. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  19. });
  20. kvStore.getResultSet('batch_test_string_key').then((result) => {
  21. console.info('Succeeded in getting result set');
  22. resultSet = result;
  23. }).catch((err) => {
  24. console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`);
  25. });
  26. kvStore.closeResultSet(resultSet).then(() => {
  27. console.info('Succeeded in closing result set');
  28. }).catch((err) => {
  29. console.error(`Failed to close resultset.code is ${err.code},message is ${err.message}`);
  30. });
  31. } catch (e) {
  32. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  33. }

getResultSet

getResultSet(deviceId: string, keyPrefix: string, callback: AsyncCallback<KVStoreResultSet>): void

獲取與指定設備ID和key前綴匹配的KVStoreResultSet對象,使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

標識要查詢其數(shù)據(jù)的設備。

keyPrefix

string

表示要匹配的鍵前綴。

callback

AsyncCallback<KVStoreResultSet>

回調函數(shù)。返回與指定設備ID和key前綴匹配的KVStoreResultSet對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
  4. if (err != undefined) {
  5. console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
  6. return;
  7. }
  8. console.info('Succeeded in getting resultSet');
  9. resultSet = result;
  10. kvStore.closeResultSet(resultSet, function (err) {
  11. if (err != undefined) {
  12. console.error(`Failed to close resultSet.code is ${err.code},message is ${err.message}`);
  13. return;
  14. }
  15. console.info('Succeeded in closing resultSet');
  16. })
  17. });
  18. } catch (e) {
  19. console.error(`Failed to get resultSet.code is ${e.code},message is ${e.message}`);
  20. }

getResultSet

getResultSet(deviceId: string, keyPrefix: string): Promise<KVStoreResultSet>

獲取與指定設備ID和key前綴匹配的KVStoreResultSet對象,使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

標識要查詢其數(shù)據(jù)的設備。

keyPrefix

string

表示要匹配的鍵前綴。

返回值:

類型

說明

Promise<KVStoreResultSet>

Promise對象。返回與指定設備ID和key前綴匹配的KVStoreResultSet對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
  4. console.info('Succeeded in getting resultSet');
  5. resultSet = result;
  6. }).catch((err) => {
  7. console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
  8. });
  9. kvStore.closeResultSet(resultSet).then(() => {
  10. console.info('Succeeded in closing resultSet');
  11. }).catch((err) => {
  12. console.error(`Failed to close resultSet.code is ${err.code},message is ${err.message}`);
  13. });
  14. } catch (e) {
  15. console.error(`Failed to get resultSet.code is ${e.code},message is ${e.message}`);
  16. }

getResultSet

getResultSet(deviceId: string, query: Query, callback: AsyncCallback<KVStoreResultSet>): void

獲取與指定設備ID和Query對象匹配的KVStoreResultSet對象,使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

KVStoreResultSet對象所屬的設備ID。

query

Query

表示查詢對象。

callback

AsyncCallback<KVStoreResultSet>

回調函數(shù)。返回與指定設備ID和Query對象匹配的KVStoreResultSet對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting batch');
  21. const query = new distributedKVStore.Query();
  22. query.prefixKey("batch_test");
  23. kvStore.getResultSet('localDeviceId', query, async function (err, result) {
  24. if (err != undefined) {
  25. console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
  26. return;
  27. }
  28. console.info('Succeeded in getting resultSet');
  29. resultSet = result;
  30. kvStore.closeResultSet(resultSet, function (err) {
  31. if (err != undefined) {
  32. console.error(`Failed to close resultSet.code is ${err.code},message is ${err.message}`);
  33. return;
  34. }
  35. console.info('Succeeded in closing resultSet');
  36. })
  37. });
  38. });
  39. } catch (e) {
  40. console.error(`Failed to get resultSet.code is ${e.code},message is ${e.message}`);
  41. }

getResultSet

getResultSet(deviceId: string, query: Query): Promise<KVStoreResultSet>

獲取與指定設備ID和Query對象匹配的KVStoreResultSet對象,使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

KVStoreResultSet對象所屬的設備ID。

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<KVStoreResultSet>

Promise對象。返回與指定設備ID和Query對象匹配的KVStoreResultSet對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting batch');
  17. }).catch((err) => {
  18. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  19. });
  20. const query = new distributedKVStore.Query();
  21. query.prefixKey("batch_test");
  22. kvStore.getResultSet('localDeviceId', query).then((result) => {
  23. console.info('Succeeded in getting resultSet');
  24. resultSet = result;
  25. }).catch((err) => {
  26. console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
  27. });
  28. query.deviceId('localDeviceId');
  29. console.info("GetResultSet " + query.getSqlLike());
  30. kvStore.closeResultSet(resultSet).then(() => {
  31. console.info('Succeeded in closing resultSet');
  32. }).catch((err) => {
  33. console.error(`Failed to close resultSet.code is ${err.code},message is ${err.message}`);
  34. });
  35. } catch (e) {
  36. console.error(`Failed to get resultSet.code is ${e.code},message is ${e.message}`);
  37. }

getResultSet

getResultSet(query: Query): Promise<KVStoreResultSet>

獲取與本設備指定Query對象匹配的KVStoreResultSet對象,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<KVStoreResultSet>

Promise對象。獲取與本設備指定Query對象匹配的KVStoreResultSet對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries).then(async () => {
  16. console.info('Succeeded in putting batch');
  17. }).catch((err) => {
  18. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  19. });
  20. const query = new distributedKVStore.Query();
  21. query.prefixKey("batch_test");
  22. kvStore.getResultSet(query).then((result) => {
  23. console.info('Succeeded in getting result set');
  24. resultSet = result;
  25. }).catch((err) => {
  26. console.error(`Failed to get resultset.code is ${err.code},message is ${err.message}`);
  27. });
  28. } catch (e) {
  29. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  30. }

getResultSet

getResultSet(query: Query, callback:AsyncCallback<KVStoreResultSet>): void

獲取與本設備指定Query對象匹配的KVStoreResultSet對象,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

callback

AsyncCallback<KVStoreResultSet>

回調函數(shù),獲取與指定Predicates對象匹配的KVStoreResultSet對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let resultSet;
  3. let entries = [];
  4. for (var i = 0; i < 10; i++) {
  5. var key = 'batch_test_string_key';
  6. var entry = {
  7. key: key + i,
  8. value: {
  9. type: distributedKVStore.ValueType.STRING,
  10. value: 'batch_test_string_value'
  11. }
  12. }
  13. entries.push(entry);
  14. }
  15. kvStore.putBatch(entries, async function (err) {
  16. if (err != undefined) {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. return;
  19. }
  20. console.info('Succeeded in putting batch');
  21. const query = new distributedKVStore.Query();
  22. query.prefixKey("batch_test");
  23. kvStore.getResultSet(query, async function (err, result) {
  24. if (err != undefined) {
  25. console.error(`Failed to get resultSet.code is ${err.code},message is ${err.message}`);
  26. return;
  27. }
  28. console.info('Succeeded in getting resultSet');
  29. resultSet = result;
  30. kvStore.closeResultSet(resultSet, function (err) {
  31. if (err != undefined) {
  32. console.error(`Failed to close resultSet.code is ${err.code},message is ${err.message}`);
  33. return;
  34. }
  35. console.info('Succeeded in closing resultSet');
  36. })
  37. });
  38. });
  39. } catch (e) {
  40. console.error(`Failed to get resultSet.code is ${e.code},message is ${e.message}`);
  41. }

getResultSize

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

獲取與本設備指定Query對象匹配的結果數(shù),使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

callback

AsyncCallback<number>

回調函數(shù)。返回與本設備指定Query對象匹配的結果數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. kvStore.putBatch(entries, async function (err) {
  15. console.info('Succeeded in putting batch');
  16. const query = new distributedKVStore.Query();
  17. query.prefixKey("batch_test");
  18. kvStore.getResultSize(query, async function (err, resultSize) {
  19. if (err != undefined) {
  20. console.error(`Failed to get result size.code is ${err.code},message is ${err.message}`);
  21. return;
  22. }
  23. console.info('Succeeded in getting result set size');
  24. });
  25. });
  26. } catch (e) {
  27. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  28. }

getResultSize

getResultSize(query: Query): Promise<number>

獲取與本設備指定Query對象匹配的結果數(shù),使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.Core

參數(shù):

參數(shù)名

類型

必填

說明

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<number>

Promise對象。獲取與本設備指定Query對象匹配的結果數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. kvStore.putBatch(entries).then(async () => {
  15. console.info('Succeeded in putting batch');
  16. }).catch((err) => {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. });
  19. const query = new distributedKVStore.Query();
  20. query.prefixKey("batch_test");
  21. kvStore.getResultSize(query).then((resultSize) => {
  22. console.info('Succeeded in getting result set size');
  23. }).catch((err) => {
  24. console.error(`Failed to get result size.code is ${err.code},message is ${err.message}`);
  25. });
  26. } catch (e) {
  27. console.error(`An unexpected error occurred.code is ${e.code},message is ${e.code}`);
  28. }

getResultSize

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

獲取與指定設備ID和Query對象匹配的結果數(shù),使用callback異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

KVStoreResultSet對象所屬的設備ID。

query

Query

表示查詢對象。

callback

AsyncCallback<number>

回調函數(shù)。返回與指定設備ID和Query對象匹配的結果數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. kvStore.putBatch(entries, async function (err) {
  15. if (err != undefined) {
  16. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  17. return;
  18. }
  19. console.info('Succeeded in putting batch');
  20. const query = new distributedKVStore.Query();
  21. query.prefixKey("batch_test");
  22. kvStore.getResultSize('localDeviceId', query, async function (err, resultSize) {
  23. if (err != undefined) {
  24. console.error(`Failed to get resultSize.code is ${err.code},message is ${err.message}`);
  25. return;
  26. }
  27. console.info('Succeeded in getting resultSize');
  28. });
  29. });
  30. } catch (e) {
  31. console.error(`Failed to get resultSize.code is ${e.code},message is ${e.message}`);
  32. }

getResultSize

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

獲取與指定設備ID和Query對象匹配的結果數(shù),使用Promise異步回調。

說明

此接口能力在HarmonyOS 3.1Release暫不支持。

系統(tǒng)能力: SystemCapability.DistributedDataManager.KVStore.DistributedKVStore

參數(shù):

參數(shù)名

類型

必填

說明

deviceId

string

KVStoreResultSet對象所屬的設備ID。

query

Query

表示查詢對象。

返回值:

類型

說明

Promise<number>

Promise對象。返回與指定設備ID和Query對象匹配的結果數(shù)。

錯誤碼:

以下錯誤碼的詳細介紹請參見分布式鍵值數(shù)據(jù)庫錯誤碼。

錯誤碼ID

錯誤信息

15100003

Database corrupted.

15100005

Database or result set already closed.

示例:

  1. try {
  2. let entries = [];
  3. for (var i = 0; i < 10; i++) {
  4. var key = 'batch_test_string_key';
  5. var entry = {
  6. key: key + i,
  7. value: {
  8. type: distributedKVStore.ValueType.STRING,
  9. value: 'batch_test_string_value'
  10. }
  11. }
  12. entries.push(entry);
  13. }
  14. kvStore.putBatch(entries).then(async () => {
  15. console.info('Succeeded in putting batch');
  16. }).catch((err) => {
  17. console.error(`Failed to put batch.code is ${err.code},message is ${err.message}`);
  18. });
  19. var query = new distributedKVStore.Query();
  20. query.prefixKey("batch_test");
  21. kvStore.getResultSize('localDeviceId', query).then((resultSize) => {
  22. console.info('Succeeded in getting resultSize');
  23. }).catch((err) => {
  24. console.error(`Failed to get resultSize.code is ${err.code},message is ${err.message}`);
  25. });
  26. } catch (e) {
  27. console.error(`Failed to get resultSize.code is ${e.code},message is ${e.message}`);
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號