diff --git a/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md b/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md index 89d0b8b9668f93108ed87946d88d19a82f28e53c..e885608121b9b3632ff68cc42106f940b6dbb410 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md +++ b/zh-cn/application-dev/reference/apis/js-apis-distributed-data.md @@ -113,6 +113,7 @@ try { | 参数名 | 参数类型 | 必填 | 说明 | | ----- | ------ | ------ | ------ | +| context | Context | 是 | 应用程序或功能的上下文。
API version 9之前的Context定义见[Context](js-apis-Context.md)。
API version 9及之后的Context定义见[Context](js-apis-ability-context.md)。| | userInfo | [UserInfo](#userinfo) | 是 | 调用方的用户信息。 | | bundleName | string | 是 | 调用方的包名。 | @@ -2227,6 +2228,87 @@ try { console.log("An unexpected error occurred. Error:" + e); } ``` + +### delete9+ + +delete(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<void>): void + +从数据库中删除符合predicates条件的键值对,并通过callback方式返回,此方法为异步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| predicates | Predicates | 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。| +| callback | AsyncCallback<void> | 是 |回调函数。 | + +**示例:** + +```js +import dataSharePredicates from './@ohos.data.dataSharePredicates'; +let kvStore; +try { + let predicates = new dataSharePredicates.DataSharePredicates(); + kvStore.delete(predicates, function (err, data) { + if (err == undefined) { + console.log('delete success'); + } else { + console.log('delete fail' + err); + } + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` + +### delete9+ + +delete(predicates: dataSharePredicates.DataSharePredicates): Promise<void> + +从数据库中删除符合predicates条件的键值对,并通过Promise方式返回,此方法为异步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| predicates | Predicates | 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。| + + +**返回值:** + +| 类型 | 说明 | +| ------ | ------- | +| Promise<void> |Promise实例,用于异步处理。| + +**示例:** + +```js +import dataSharePredicates from './@ohos.data.dataSharePredicates'; +let kvStore; +try { + let predicates = new dataSharePredicates.DataSharePredicates(); + let arr = ["name"]; + predicates.inKeys(arr); + kvStore.put("name", "bob").then((data) => { + console.log('put success' + JSON.stringify(data)); + kvStore.delete(predicates).then((data) => { + console.log('delete success'); + }).catch((err) => { + console.log('delete fail' + JSON.stringify(err)); + }); + }) .catch((err) => { + console.log(' put fail' + err); + }); +}catch (e) { + console.log("An unexpected error occurred. Error:" + e); +} + +``` + ### on('dataChange') on(event: 'dataChange', type: SubscribeType, observer: Callback<ChangeNotification>): void @@ -2304,6 +2386,36 @@ kvStore.off('dataChange', function (data) { }); ``` +### off('syncComplete')9+ + +off(event: 'syncComplete', syncCallback?: Callback<Array<[string, number]>>): void + +取消订阅数据变更通知,此方法为同步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| event |string | 是 |取消订阅的事件名,固定为'syncComplete',表示同步完成事件。 | +| syncCallback |Callback<Array<[string, number]>> | 否 |用于向调用方发送同步结果的回调。 | + +**示例:** + +```js +let kvStore; +try { + const func = function (data) { + console.log('syncComplete ' + data) + }; + kvStore.on('syncComplete', func); + kvStore.off('syncComplete', func); +}catch(e) { + console.log('syncComplete e ' + e); +} +``` + ### putBatch8+ @@ -2406,6 +2518,89 @@ try { } ``` +### putBatch9+ + +putBatch(value: Array<ValuesBucket>, callback: AsyncCallback<void>): void + +将值写入KvStore数据库,并通过callback方式返回,此方法为异步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| value |Array[<ValuesBucket>]()[] | 是 |表示要插入的数据。 | +| callback |Asyncallback<void> |是 |回调函数。 | + +**示例:** + +```js +let kvStore; +try { + let v8Arr = []; + let arr = new Uint8Array([4,5,6,7]); + let vb1 = {key : "name_1", value : 32} + let vb2 = {key : "name_2", value : arr}; + let vb3 = {key : "name_3", value : "lisi"}; + + v8Arr.push(vb1); + v8Arr.push(vb2); + v8Arr.push(vb3); + kvStore.putBatch(v8Arr, async function (err,data) { + console.log('putBatch success'); + }).catch((err) => { + console.log('putBatch fail ' + JSON.stringify(err)); + }); +}catch(e) { + console.log('putBatch e ' + JSON.stringify(e)); +} +``` + +### putBatch9+ + +putBatch(value: Array<ValuesBucket>): Promise<void> + +将valuesbucket类型的值写入KvStore数据库,并通过Promise方式返回,此方法为异步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| value |Array<[ValuesBucket>](#)[] | 是 |表示要插入的数据。 | + +**返回值:** + +| 类型 | 说明 | +| ------ | ------- | +| Promise<void> |Promise实例,用于异步处理。| + +**示例:** + +```js +let kvStore; +try { + let v8Arr = []; + let arr = new Uint8Array([4,5,6,7]); + let vb1 = {key : "name_1", value : 32} + let vb2 = {key : "name_2", value : arr}; + let vb3 = {key : "name_3", value : "lisi"}; + + v8Arr.push(vb1); + v8Arr.push(vb2); + v8Arr.push(vb3); + kvStore.putBatch(v8Arr).then(async (err) => { + console.log('putBatch success'); + }).catch((err) => { + console.log('putBatch fail ' + JSON.stringify(err)); + }); +}catch(e) { + console.log('PutBatch e ' + JSON.stringify(e)); +} + +``` ### deleteBatch8+ @@ -3440,6 +3635,81 @@ try { } ``` +### getResultSet9+ ### + +getResultSet(predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<KvStoreResultSet>): void + +获取与指定Predicate对象匹配的KvStoreResultSet对象,并通过callback方式返回,此方法为异步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| predicates | Predicates | 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。 | +| callback |AsyncCallback<[KvStoreResultSet](#kvstoreresultsetsup8sup)> | 是 |回调函数,获取与指定Predicates对象匹配的KvStoreResultSet对象。 | + +**示例:** + +```js +import dataSharePredicates from './@ohos.data.dataSharePredicates'; +let kvStore; +try { + let resultSet; + let predicates = new dataSharePredicates.DataSharePredicates(); + predicates.prefixKey("batch_test_string_key"); + kvStore.getResultSet(predicates, async function (err, result) { + console.log(' GetResultSet success'); + resultSet = result; + kvStore.closeResultSet(resultSet, function (err, data) { + console.log(' closeResultSet success'); + }) + }); +}catch(e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +### getResultSet9+ ### + +getResultSet(predicates: dataSharePredicates.DataSharePredicates): Promise<KvStoreResultSet> + +获取与指定Predicate对象匹配的KvStoreResultSet对象,并通过Promise方式返回,此方法为异步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| predicates |[Predicates](#) | 是 |指示筛选条件,当此参数为null时,应定义处理逻辑。 | + +**返回值:** + +| 类型 | 说明 | +| ------ | ------- | +|Promise<[KvStoreResultSet](#kvstoreresultset8)> |Promise实例,用于获取异步返回结果。| + +**示例:** + +```js +import dataSharePredicates from './@ohos.data.dataSharePredicates'; +let kvStore; +try { + let resultSet; + let predicates = new dataSharePredicates.DataSharePredicates(); + predicates.prefixKey("batch_test_string_key"); + kvStore.getResultSet(predicates) .then((result) => { + console.log(' GetResultSet success'); + resultSet = result; + kvStore.closeResultSet(resultSet, fun ction (err, data) { + console.log(' closeResultSet success'); + }) + }); +}catch(e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` ### closeResultSet8+ ### closeResultSet(resultSet: KvStoreResultSet, callback: AsyncCallback<void>): void @@ -3769,8 +4039,60 @@ try { } ``` +### on('dataChange')9+ ### + +on(event: 'dataChange', type: SubscribeType, listener: Callback<ChangeNotification>): void + +订阅指定类型的数据变更通知,此方法为同步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| event |string | 是 |订阅的事件名,固定为'dataChange',表示数据变更事件。 | +| type |[SubscribeType](#subscribetype) | 是 |表示订阅的类型。 | +| listener |Callback<[ChangeNotification](#changenotification)> | 是 |回调函数。 | + +**示例:** + +```js +let kvStore; +kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) { + console.log("dataChange callback call data: " + JSON.stringify(data)); +}); + +``` + +### off('dataChange')9+ ### + +off(event:'dataChange', listener?: Callback<ChangeNotification>): void + +取消订阅数据变更通知,此方法为同步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| event |string | 是 |取消订阅的事件名,固定为'dataChange',表示数据变更事件。 | +| listener |Callback<[ChangeNotification](#changenotification)> |否 |回调函数。 | + +**示例:** + +```js +let kvStore; +kvStore.on('dataChange', function (data) { + console.log("callback call data: " + data); +}); +kvStore.off('dataChange', function (data) { + console.log("callback call data: " + data); +}); +``` +### sync7+ -### sync sync(deviceIdList: string[], mode: SyncMode, allowedDelayMs?: number): void @@ -3795,6 +4117,48 @@ let kvStore; kvStore.sync('deviceIds', distributedData.SyncMode.PULL_ONLY, 1000); ``` +### sync9+ +sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void + +在手动同步方式下,触发数据库同步,此方法为同步方法。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)。 + +**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| deviceIds |string[] | 是 |同一组网环境下,需要同步的设备的deviceId列表。 | +| mode |[SyncMode](#syncmode) | 是 |同步模式。 | +| query |[Query](#querysup8sup) | 是 |表示数据库的查询谓词条件 | +| delayMs |number | 否 |可选参数,允许延时时间,单位:ms(毫秒)。 | + +**示例:** + +```js +let kvstore; +const KEY_TEST_SYNC_ELEMENT = 'key_test_sync'; +const VALUE_TEST_SYNC_ELEMENT = 'value-string-001'; +try { + kvStore.on('syncComplete', function (data) { + console.log('Sync dataChange'); + }); + kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) { + console.log('Sync put success'); + const devices = ['deviceList']; + const mode = distributedData.SyncMode.PULL_ONLY; + const query = new distributedData.Query(); + query.prefixKey("batch_test"); + query.deviceId('localDeviceId'); + kvStore.sync(devices, query, PULL_ONLY , 1000); + }); +}catch(e) { + console.log('Sync e' + e); +} +``` + ### setSyncParam8+ ### setSyncParam(defaultAllowedDelayMs: number, callback: AsyncCallback<void>): void @@ -5062,6 +5426,48 @@ try { } ``` +### sync9+ ### + +sync(deviceIds: string[], query: Query, mode: SyncMode, delayMs?: number): void + +在手动同步方式下, 触发数据库同步,此方法为同步方法。关于分布式数据服务的同步方式说明,请见[分布式数据服务概述](../../database/database-mdds-overview.md)。 + +**需要权限**: ohos.permission.DISTRIBUTED_DATASYNC。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| deviceIds |string[] | 是 |需要同步DeviceKvStore数据库的设备ID列表。 | +| query |[Query](#query8) | 是 | 数据库的查询谓词条件。| +| delayMs |number | 否 |可选参数,允许延时时间,单位:ms(毫秒)。 | + +**示例:** + +```js +let kvstore; +const KEY_TEST_SYNC_ELEMENT = 'key_test_sync'; +const VALUE_TEST_SYNC_ELEMENT = 'value-string-001'; +try { + kvStore.on('syncComplete', function (data) { + console.log('Sync dataChange'); + }); + kvStore.put(KEY_TEST_SYNC_ELEMENT + 'testSync101', VALUE_TEST_SYNC_ELEMENT, function (err,data) { + console.log('Sync put success'); + const devices = ['deviceList']; + const mode = distributedData.SyncMode.PULL_ONLY; + const query = new distributedData.Query(); + query.prefixKey("batch_test"); + query.deviceId('localDeviceId'); + kvStore.sync(devices, query, 1000); + }); +}catch(e) { + console.log('Sync e' + e); +} +``` + ### on('syncComplete')8+ ### on(event: 'syncComplete', syncCallback: Callback<Array<[string, number]>>): void @@ -5128,6 +5534,59 @@ try { } ``` +### on('dataChange')9+ ### + +on(event: 'dataChange', type: SubscribeType, listener: Callback<ChangeNotification>): void + +订阅指定类型的数据变更通知,此方法为同步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| event |string | 是 |订阅的事件名,固定为'dataChange',表示数据变更事件。 | +| type |[SubscribeType](#subscribetype) | 是 |表示订阅的类型。 | +| listener |Callback<[ChangeNotification](#changenotification)> | 是 |回调函数。 | + +**示例:** + +```js +let kvStore; +kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_LOCAL, function (data) { + console.log("dataChange callback call data: " + JSON.stringify(data)); +}); +``` + + +### off('dataChange')9+ ### + +off(event:'dataChange', listener?: Callback<ChangeNotification>): void + +取消订阅数据变更通知,此方法为同步方法。 + +**系统能力:** SystemCapability.DistributedDataManager.KVStore.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------------- | +| event |string | 是 |取消订阅的事件名,固定为'dataChange',表示数据变更事件。 | +| listener |Callback<[ChangeNotification](#changenotification)> |否 |回调函数。 | + +**示例:** + +```js +let kvStore; +kvStore.on('dataChange', function (data) { + console.log("callback call data: " + data); +}); +kvStore.off('dataChange', function (data) { + console.log("callback call data: " + data); +}); +``` + ## SyncMode 同步模式枚举。