HarmonyOSAPI:@ohos.data.distributedData (分布式数据管理)

joytrian
发布于 2023-4-4 16:36
浏览
0收藏

版本:v3.1 Beta

@ohos.data.distributedData (分布式数据管理)

sync

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

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

此接口能力在HarmonyOS 3.1Beta1暂不支持。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC。

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

参数:

参数名

类型

必填

说明

deviceIds

string[]

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

mode

​SyncMode​

同步模式。

delayMs

number

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

示例:

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

on('dataChange')8+

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

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

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

参数:

参数名

类型

必填

说明

event

string

订阅的事件名,固定为'dataChange',表示数据变更事件。

type

​SubscribeType​

表示订阅的类型。

listener

Callback<​​ChangeNotification​​>

回调函数。

示例:

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

on('syncComplete')8+

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

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

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

参数:

参数名

类型

必填

说明

event

string

订阅的事件名,固定为'syncComplete',表示同步完成事件。

syncCallback

Callback<Array<[string, number]>>

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

示例:

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

off('dataChange')8+

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

取消订阅数据变更通知。

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

参数:

参数名

类型

必填

说明

event

string

取消订阅的事件名,固定为'dataChange',表示数据变更事件。

listener

Callback<​​ChangeNotification​​>

回调函数。

示例:

let kvStore;
class KvstoreModel {
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
        }
    }
    unsubscribeDataChange() {
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
        }
    }
}

off('syncComplete')8+

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

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

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

参数:

参数名

类型

必填

说明

event

string

取消订阅的事件名,固定为'syncComplete',表示同步完成事件。

syncCallback

Callback<Array<[string, number]>>

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

示例:

let kvStore;
class KvstoreModel {
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
        }
    }
    unsubscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
        }
    }
}

setSyncParam8+

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

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

此接口能力在HarmonyOS 3.1Beta1暂不支持。

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

参数:

参数名

类型

必填

说明

defaultAllowedDelayMs

number

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

callback

AsyncCallback<void>

回调函数。

示例:

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

setSyncParam8+

setSyncParam(defaultAllowedDelayMs: number): Promise<void>

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

此接口能力在HarmonyOS 3.1Beta1暂不支持。

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

参数:

参数名

类型

必填

说明

defaultAllowedDelayMs

number

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

返回值:

类型

说明

Promise<void>

无返回结果的Promise对象。

示例:

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

getSecurityLevel8+

getSecurityLevel(callback: AsyncCallback<SecurityLevel>): void

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

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

参数:

参数名

类型

必填

说明

callback

AsyncCallback<​​SecurityLevel​​>

回调函数。返回数据库的安全级别。

示例:

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

getSecurityLevel8+

getSecurityLevel(): Promise<SecurityLevel>

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

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

返回值:

类型

说明

Promise<​​SecurityLevel​​>

Promise对象。返回数据库的安全级别。

示例:

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

DeviceKVStore8+

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

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

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

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

get8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

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

key

string

表示要查询key值的键。

callback

AsyncCallback<boolean|string|number|Uint8Array>

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

示例:

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

get8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

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

key

string

表示要查询key值的键。

返回值:

类型

说明

Promise<boolean|string|number|Uint8Array>

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

示例:

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

getEntries8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

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

keyPrefix

string

表示要匹配的键前缀。

callback

AsyncCallback<​​Entry​​[]>

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

示例:

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

getEntries8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

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

keyPrefix

string

表示要匹配的键前缀。

返回值:

类型

说明

Promise<​​Entry​​[]>

Promise对象。返回匹配给定条件的所有键值对的列表。

示例:

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

getEntries8+

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

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

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

参数:

参数名

类型

必填

说明

query

​Query​

表示查询对象。

callback

AsyncCallback<​​Entry​​[]>

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

示例:

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

getEntries8+

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

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

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

参数:

参数名

类型

必填

说明

query

​Query​

表示查询对象。

返回值:

类型

说明

Promise<​​Entry​​[]>

Promise对象。返回与指定Query对象匹配的键值对列表。

示例:

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

getEntries8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

键值对所属的设备ID。

query

​Query​

表示查询对象。

callback

AsyncCallback<​​Entry​​[]>

回调函数。返回与指定设备ID和Query对象匹配的键值对列表。

示例:

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

getEntries8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

键值对所属的设备ID。

query

​Query​

表示查询对象。

返回值:

类型

说明

Promise<​​Entry​​[]>

Promise对象。返回与指定设备ID和Query对象匹配的键值对列表。

示例:

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

getResultSet8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

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

keyPrefix

string

表示要匹配的键前缀。

callback

AsyncCallback<​​KvStoreResultSet​​>

回调函数。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。

示例:

let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key', async function (err, result) {
        console.log('getResultSet succeed.');
        resultSet = result;
        kvStore.closeResultSet(resultSet, function (err, data) {
            console.log('closeResultSet success');
        })
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}

getResultSet8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

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

keyPrefix

string

表示要匹配的键前缀。

返回值:

类型

说明

Promise<​​KvStoreResultSet​​>

Promise对象。返回与指定设备ID和key前缀匹配的KvStoreResultSet对象。

示例:

let kvStore;
try {
    let resultSet;
    kvStore.getResultSet('localDeviceId', 'batch_test_string_key').then((result) => {
        console.log('getResultSet succeed.');
        resultSet = result;
    }).catch((err) => {
        console.log('getResultSet failed: ' + JSON.stringify(err));
    });
    kvStore.closeResultSet(resultSet).then((err) => {
        console.log('closeResultSet success');
    }).catch((err) => {
        console.log('closeResultSet fail ' + JSON.stringify(err));
    });
}catch(e) {
    console.log('GetResultSet e ' + e);
}

getResultSet8+

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

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

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

参数:

参数名

类型

必填

说明

query

​Query​

表示查询对象。

callback

AsyncCallback<​​KvStoreResultSet​​>

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

示例:

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

getResultSet8+

getResultSet(query: Query): Promise<KvStoreResultSet>

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

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

参数:

参数名

类型

必填

说明

query

​Query​

表示查询对象。

返回值:

类型

说明

Promise<​​KvStoreResultSet​​>

Promise对象。返回与指定Query对象匹配的KvStoreResultSet对象。

示例:

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

getResultSet8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

KvStoreResultSet对象所属的设备ID。

query

​Query​

表示查询对象。

callback

AsyncCallback<​​KvStoreResultSet​​>

回调函数。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。

示例:

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

getResultSet8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

KvStoreResultSet对象所属的设备ID。

query

​Query​

表示查询对象。

返回值:

类型

说明

Promise<​​KvStoreResultSet​​>

Promise对象。返回与指定设备ID和Query对象匹配的KvStoreResultSet对象。

示例:

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

}catch(e) {
    console.log('GetResultSet e ' + e);
}

closeResultSet8+

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

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

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

参数:

参数名

类型

必填

说明

resultSet

​KvStoreResultSet​

指示要关闭的KvStoreResultSet对象。

callback

AsyncCallback<void>

回调函数。

示例:

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

closeResultSet8+

closeResultSet(resultSet: KvStoreResultSet): Promise<void>

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

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

参数:

参数名

类型

必填

说明

resultSet

​KvStoreResultSet​

指示要关闭的KvStoreResultSet对象。

返回值:

类型

说明

Promise<void>

无返回结果的Promise对象。

示例:

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

getResultSize8+

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

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

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

参数:

参数名

类型

必填

说明

query

​Query​

表示查询对象。

callback

AsyncCallback<number>

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

示例:

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

getResultSize8+

getResultSize(query: Query): Promise<number>

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

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

参数:

参数名

类型

必填

说明

query

​Query​

表示查询对象。

返回值:

类型

说明

Promise<number>

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

示例:

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

getResultSize8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

KvStoreResultSet对象所属的设备ID。

query

​Query​

表示查询对象。

callback

AsyncCallback<number>

回调函数。返回与指定设备ID和Query对象匹配的结果数。

示例:

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

getResultSize8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

KvStoreResultSet对象所属的设备ID。

query

​Query​

表示查询对象。

返回值:

类型

说明

Promise<number>

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

示例:

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

removeDeviceData8+

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

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

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

参数:

参数名

类型

必填

说明

deviceId

string

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

callback

AsyncCallback<void>

回调函数。

示例:

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

removeDeviceData8+

removeDeviceData(deviceId: string): Promise<void>

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

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

参数:

参数名

类型

必填

说明

deviceId

string

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

返回值:

类型

说明

Promise<void>

无返回结果的Promise对象。

示例:

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

sync8+

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

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

此接口能力在HarmonyOS 3.1Beta1暂不支持。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC。

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

参数:

参数名

类型

必填

说明

deviceIds

string[]

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

mode

​SyncMode​

同步模式。

delayMs

number

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

示例:

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

on('dataChange')8+

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

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

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

参数:

参数名

类型

必填

说明

event

string

订阅的事件名,固定为'dataChange',表示数据变更事件。

type

​SubscribeType​

表示订阅的类型。

listener

Callback<​​ChangeNotification​​>

回调函数。

示例:

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

on('syncComplete')8+

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

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

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

参数:

参数名

类型

必填

说明

event

string

订阅的事件名,固定为'syncComplete',表示同步完成事件。

syncCallback

Callback<Array<[string, number]>>

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

示例:

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

off('dataChange')8+

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

取消订阅数据变更通知。

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

参数:

参数名

类型

必填

说明

event

string

取消订阅的事件名,固定为'dataChange',表示数据变更事件。

listener

Callback<​​ChangeNotification​​>

回调函数。

示例:

let kvStore;
class KvstoreModel {
    call(data) {
        console.log("dataChange: " + data);
    }
    subscribeDataChange() {
        if (kvStore != null) {
            kvStore.on('dataChange', distributedData.SubscribeType.SUBSCRIBE_TYPE_REMOTE, this.call);
        }
    }
    unsubscribeDataChange() {
        if (kvStore != null) {
            kvStore.off('dataChange', this.call);
        }
    }
}

off('syncComplete')8+

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

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

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

参数:

参数名

类型

必填

说明

event

string

取消订阅的事件名,固定为'syncComplete',表示同步完成事件。

syncCallback

Callback<Array<[string, number]>>

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

示例:

let kvStore;
class KvstoreModel {
    call(data) {
        console.log("syncComplete: " + data);
    }
    subscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.on('syncComplete', this.call);
        }
    }
    unsubscribeSyncComplete() {
        if (kvStore != null) {
            kvStore.off('syncComplete', this.call);
        }
    }
}

SyncMode

同步模式枚举。

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

名称

说明

PULL_ONLY

0

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

PUSH_ONLY

1

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

PUSH_PULL

2

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


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-distributed-data-0000001478181709-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001478181709__syncmode​

已于2023-4-4 16:36:18修改
收藏
回复
举报
回复
    相关推荐