基本数据对象的相关能力

2024-01-23 16:02 更新

本模块提供管理基本数据对象的相关能力,包括创建、查询、删除、修改、订阅等;同时支持相同应用多设备间的分布式数据对象协同能力。

说明
  • 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
  • 分布式数据对象当前仅支持本地功能,分布式功能暂不支持。

导入模块

  1. import distributedObject from '@ohos.data.distributedDataObject';

distributedObject.create9+

create(context: Context, source: object): DataObject

创建一个分布式数据对象。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

context

Context

应用的上下文。

FA模型的应用Context定义见Context

Stage模型的应用Context定义见Context

source

object

设置分布式数据对象的属性。

返回值:

类型

说明

DataObject

创建完成的分布式数据对象。

示例:

FA模型示例:

  1. // 导入模块
  2. import distributedObject from '@ohos.data.distributedDataObject';
  3. import featureAbility from '@ohos.ability.featureAbility';
  4. // 获取context
  5. let context = featureAbility.getContext();
  6. // 创建对象,该对象包含4个属性类型:string、number、boolean和Object
  7. let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});

Stage模型示例:

  1. // 导入模块
  2. import distributedObject from '@ohos.data.distributedDataObject';
  3. import UIAbility from '@ohos.app.ability.UIAbility';
  4. let g_object = null;
  5. class EntryAbility extends UIAbility {
  6. onWindowStageCreate(windowStage){
  7. // 创建对象,该对象包含4个属性类型:string、number、boolean和Object
  8. g_object = distributedObject.create(this.context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
  9. }
  10. }

distributedObject.genSessionId

genSessionId(): string

随机创建一个sessionId。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

返回值:

类型

说明

string

随机创建的sessionId。

示例:

  1. import distributedObject from '@ohos.data.distributedDataObject';
  2. let sessionId = distributedObject.genSessionId();

SaveSuccessResponse9+

save接口回调信息。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

名称

类型

必填

说明

sessionId

string

多设备协同的唯一标识。

version

number

已保存对象的版本。

deviceId

string

存储数据的设备号,标识需要保存对象的设备。"local"表示本地设备,否则表示其他设备的设备号。

RevokeSaveSuccessResponse9+

revokeSave接口回调信息。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

名称

类型

必填

说明

sessionId

string

多设备协同的唯一标识。

DataObject

表示一个分布式数据对象。在使用以下接口前,需调用create()获取DataObject对象。

setSessionId9+

setSessionId(sessionId: string, callback: AsyncCallback<void>): void

设置sessionId,使用callback异步回调。当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

sessionId

string

分布式数据对象在可信组网中的标识ID。设置为""时表示退出分布式组网。

callback

AsyncCallback<void>

加入session的异步回调。

错误码:

以下错误码的详细介绍参见分布式数据对象错误码

错误码ID

错误信息

15400001

Create table failed.

示例:

  1. // g_object加入分布式组网
  2. g_object.setSessionId(distributedObject.genSessionId(), ()=>{
  3. console.info("join session");
  4. });
  5. // 退出分布式组网
  6. g_object.setSessionId(() => {
  7. console.info("leave all session.");
  8. });

setSessionId9+

setSessionId(callback: AsyncCallback<void>): void

退出所有已加入的session,使用callback方式异步回调。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

退出所有已加入session的异步回调。

错误码:

以下错误码的详细介绍参见分布式数据对象错误码

错误码ID

错误信息

15400001

Create table failed.

示例:

  1. // g_object加入分布式组网
  2. g_object.setSessionId(distributedObject.genSessionId(), ()=>{
  3. console.info("join session");
  4. });
  5. // 退出分布式组网
  6. g_object.setSessionId(() => {
  7. console.info("leave all lession.");
  8. });

setSessionId9+

setSessionId(sessionId?: string): Promise<void>

设置sessionId,使用Promise异步回调。当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

sessionId

string

分布式数据对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。

返回值:

类型

说明

Promise<void>

Promise对象。

错误码:

以下错误码的详细介绍参见分布式数据对象错误码

错误码ID

错误信息

15400001

Create table failed.

示例:

  1. // g_object加入分布式组网
  2. g_object.setSessionId(distributedObject.genSessionId()).then (()=>{
  3. console.info("join session.");
  4. }).catch((error)=>{
  5. console.info("error:" + error.code + error.message);
  6. });
  7. // 退出分布式组网
  8. g_object.setSessionId().then (()=>{
  9. console.info("leave all lession.");
  10. }).catch((error)=>{
  11. console.info("error:" + error.code + error.message);
  12. });

on('change')9+

on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<string> }>): void

监听分布式数据对象的数据变更。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'change',表示数据变更。

callback

Callback<{ sessionId: string, fields: Array<string> }>

变更回调对象实例。

sessionId:标识变更对象的sessionId;

fields:标识对象变更的属性名。

示例:

  1. globalThis.changeCallback = (sessionId, changeData) => {
  2. console.info("change" + sessionId);
  3. if (changeData != null && changeData != undefined) {
  4. changeData.forEach(element => {
  5. console.info("changed !" + element + " " + g_object[element]);
  6. });
  7. }
  8. }
  9. g_object.on("change", globalThis.changeCallback);

off('change')9+

off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<string> }>): void

当不再进行数据变更监听时,使用此接口删除对象的变更监听。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'change',表示数据变更。

callback

Callback<{ sessionId: string, fields: Array<string> }>

需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。

sessionId:标识变更对象的sessionId;

fields:标识对象变更的属性名。

示例:

  1. // 删除数据变更回调changeCallback
  2. g_object.off("change", globalThis.changeCallback);
  3. // 删除所有的数据变更回调
  4. g_object.off("change");

on('status')9+

on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>): void

监听分布式数据对象的上下线。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'status',表示对象上下线。

callback

Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>

监听上下线回调实例。

sessionId:标识变更对象的sessionId;

networkId:标识对象设备,即deviceId;

status:标识对象为'online'(上线)或'offline'(下线)的状态。

示例:

  1. globalThis.statusCallback = (sessionId, networkId, status) => {
  2. globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
  3. }
  4. g_object.on("status", globalThis.statusCallback);

off('status')9+

off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>): void

当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'status',表示对象上下线。

callback

Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>

需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。

sessionId:标识变更对象的sessionId;

deviceId:标识变更对象的deviceId;

status:标识对象为'online'(上线)或'offline'(下线)的状态。

示例:

  1. globalThis.statusCallback = (sessionId, networkId, status) => {
  2. globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
  3. }
  4. // 删除上下线回调changeCallback
  5. g_object.off("status",globalThis.statusCallback);
  6. // 删除所有的上下线回调
  7. g_object.off("status");

save9+

save(deviceId: string, callback: AsyncCallback<SaveSuccessResponse>): void

保存分布式数据对象。使用callback方式异步回调。

对象数据保存成功后,当应用存在时不会释放对象数据,当应用退出后,重新进入应用时,恢复保存在设备上的数据。

有以下几种情况时,保存的数据将会被释放:

  • 存储时间超过24小时。
  • 应用卸载。
  • 成功恢复数据之后。
说明

当前HarmonyOS设备均不支持此接口,应用调用此接口将返回801错误码。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

deviceId

string

保存数据的deviceId,当deviceId为"local",代表存储在本地设备。

callback

AsyncCallback<SaveSuccessResponse>

回调函数。返回SaveSuccessResponse,包含sessionId、version、deviceId等信息。

示例:

  1. g_object.setSessionId("123456");
  2. g_object.save("local", (err, result) => {
  3. if (err) {
  4. console.info("save failed, error code = " + err.code);
  5. console.info("save failed, error message: " + err.message);
  6. return;
  7. }
  8. console.info("save callback");
  9. console.info("save sessionId: " + result.sessionId);
  10. console.info("save version: " + result.version);
  11. console.info("save deviceId: " + result.deviceId);
  12. });

save9+

save(deviceId: string): Promise<SaveSuccessResponse>

保存分布式数据对象。使用Promise方式作为异步回调。

对象数据保存成功后,当应用存在时不会释放对象数据,当应用退出后,重新进入应用时,恢复保存在设备上的数据。

有以下几种情况时,保存的数据将会被释放:

  • 存储时间超过24小时。
  • 应用卸载。
  • 成功恢复数据之后。
说明

当前HarmonyOS设备均不支持此接口,应用调用此接口将返回801错误码。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

deviceId

string

保存数据的设备号,当deviceId默认为"local",标识需要保存对象的设备。

返回值:

类型

说明

Promise<SaveSuccessResponse>

Promise对象。返回SaveSuccessResponse,包含sessionId、version、deviceId等信息。

示例:

  1. g_object.setSessionId("123456");
  2. g_object.save("local").then((result) => {
  3. console.info("save callback");
  4. console.info("save sessionId " + result.sessionId);
  5. console.info("save version " + result.version);
  6. console.info("save deviceId " + result.deviceId);
  7. }).catch((err) => {
  8. console.info("save failed, error code = " + err.code);
  9. console.info("save failed, error message: " + err.message);
  10. });

revokeSave9+

revokeSave(callback: AsyncCallback<RevokeSaveSuccessResponse>): void

撤回保存的分布式数据对象。使用callback方式作为异步方法。

如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。

如果对象保存在其他设备,那么将删除本地设备上的数据。

说明

当前HarmonyOS设备均不支持此接口,应用调用此接口将返回801错误码。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

callback

AsyncCallback<RevokeSaveSuccessResponse>

回调函数。返回RevokeSaveSuccessResponse,包含sessionId。

示例:

  1. g_object.setSessionId("123456");
  2. // 持久化数据
  3. g_object.save("local", (err, result) => {
  4. if (err) {
  5. console.info("save failed, error code = " + err.code);
  6. console.info("save failed, error message: " + err.message);
  7. return;
  8. }
  9. console.info("save callback");
  10. console.info("save sessionId: " + result.sessionId);
  11. console.info("save version: " + result.version);
  12. console.info("save deviceId: " + result.deviceId);
  13. });
  14. // 删除持久化保存的数据
  15. g_object.revokeSave((err, result) => {
  16. if (err) {
  17. console.info("revokeSave failed, error code = " + err.code);
  18. console.info("revokeSave failed, error message: " + err.message);
  19. return;
  20. }
  21. console.info("revokeSave callback");
  22. console.info("revokeSave sessionId " + result.sessionId);
  23. });

revokeSave9+

revokeSave(): Promise<RevokeSaveSuccessResponse>

撤回保存的分布式数据对象。使用Promise方式作为异步方法。

如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。

如果对象保存在其他设备,那么将删除本地设备上的数据。

说明

当前HarmonyOS设备均不支持此接口,应用调用此接口将返回801错误码。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

返回值:

类型

说明

Promise<RevokeSaveSuccessResponse>

Promise对象。返回RevokeSaveSuccessResponse,包含sessionId。

示例:

  1. g_object.setSessionId("123456");
  2. // 持久化数据
  3. g_object.save("local").then((result) => {
  4. console.info("save callback");
  5. console.info("save sessionId " + result.sessionId);
  6. console.info("save version " + result.version);
  7. console.info("save deviceId " + result.deviceId);
  8. }).catch((err) => {
  9. console.info("save failed, error code = " + err.code);
  10. console.info("save failed, error message: " + err.message);
  11. });
  12. // 删除持久化保存的数据
  13. g_object.revokeSave().then((result) => {
  14. console.info("revokeSave callback");
  15. console.info("sessionId" + result.sessionId);
  16. }).catch((err)=> {
  17. console.info("revokeSave failed, error code = " + err.code);
  18. console.info("revokeSave failed, error message = " + err.message);
  19. });

distributedObject.createDistributedObject(deprecated)

createDistributedObject(source: object): DistributedObject

创建一个分布式数据对象。

说明

从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用distributedObject.create替代。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

source

object

设置分布式数据对象的属性。

返回值:

类型

说明

DistributedObject

创建完成的分布式数据对象。

示例:

  1. import distributedObject from '@ohos.data.distributedDataObject';
  2. // 创建对象,对象包含4个属性类型,string,number,boolean和Object
  3. let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});

DistributedObject(deprecated)

表示一个分布式数据对象。在使用以下接口前,需调用createDistributedObject()获取DistributedObject对象。

setSessionId(deprecated)

setSessionId(sessionId?: string): boolean

设置sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。

说明

从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用setSessionId替代。

需要权限: ohos.permission.DISTRIBUTED_DATASYNC。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

sessionId

string

分布式数据对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。

返回值:

类型

说明

boolean

true:标识设置sessionId成功。

false:标识设置sessionId失败。

示例:

  1. import distributedObject from '@ohos.data.distributedDataObject';
  2. let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});;
  3. // g_object加入分布式组网
  4. g_object.setSessionId(distributedObject.genSessionId());
  5. // 设置为""退出分布式组网
  6. g_object.setSessionId("");

on('change')(deprecated)

on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<string> }>): void

监听分布式数据对象的变更。

说明

从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用on('change')替代。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'change',表示数据变更。

callback

Callback<{ sessionId: string, fields: Array<string> }>

变更回调对象实例。

sessionId:标识变更对象的sessionId;

fields:标识对象变更的属性名。

示例:

  1. import distributedObject from '@ohos.data.distributedDataObject';
  2. let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
  3. globalThis.changeCallback = (sessionId, changeData) => {
  4. console.info("change" + sessionId);
  5. if (changeData != null && changeData != undefined) {
  6. changeData.forEach(element => {
  7. console.info("changed !" + element + " " + g_object[element]);
  8. });
  9. }
  10. }
  11. g_object.on("change", globalThis.changeCallback);

off('change')(deprecated)

off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<string> }>): void

当不再进行数据变更监听时,使用此接口删除对象的变更监听。

说明

从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用off('change')替代。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'change',表示数据变更。

callback

Callback<{ sessionId: string, fields: Array<string> }>

需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。

sessionId:标识变更对象的sessionId;

fields:标识对象变更的属性名。

示例:

  1. import distributedObject from '@ohos.data.distributedDataObject';
  2. let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
  3. // 删除数据变更回调changeCallback
  4. g_object.off("change", globalThis.changeCallback);
  5. // 删除所有的数据变更回调
  6. g_object.off("change");

on('status')(deprecated)

on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>): void

监听分布式数据对象的上下线。

说明

从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用on('status')替代。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'status',表示对象上下线。

callback

Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>

监听上下线回调实例。

sessionId:标识变更对象的sessionId;

networkId:标识对象设备,即deviceId;

status:标识对象为'online'(上线)或'offline'(下线)的状态。

示例:

  1. import distributedObject from '@ohos.data.distributedDataObject';
  2. globalThis.statusCallback = (sessionId, networkId, status) => {
  3. globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
  4. }
  5. let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
  6. g_object.on("status", globalThis.statusCallback);

off('status')(deprecated)

off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>): void

当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。

说明

从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用off('status')替代。

系统能力: SystemCapability.DistributedDataManager.DataObject.DistributedObject

参数:

参数名

类型

必填

说明

type

string

事件类型,固定为'status',表示对象上下线。

callback

Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>

需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。

sessionId:标识变更对象的sessionId;

deviceId:标识变更对象的deviceId;

status:标识对象为'online'(上线)或'offline'(下线)的状态。

示例:

  1. import distributedObject from '@ohos.data.distributedDataObject';
  2. let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});
  3. globalThis.statusCallback = (sessionId, networkId, status) => {
  4. globalThis.response += "status changed " + sessionId + " " + status + " " + networkId;
  5. }
  6. // 删除上下线回调changeCallback
  7. g_object.off("status",globalThis.statusCallback);
  8. // 删除所有的上下线回调
  9. g_object.off("status");
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号