1e41f4b71Sopenharmony_ci# @ohos.data.distributedDataObject (分布式数据对象) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci本模块提供管理基本数据对象的相关能力,包括创建、查询、删除、修改、订阅等;同时支持相同应用多设备间的分布式数据对象协同能力。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci## 导入模块 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci```ts 13e41f4b71Sopenharmony_ciimport { distributedDataObject } from '@kit.ArkData'; 14e41f4b71Sopenharmony_ci``` 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci## distributedDataObject.create<sup>9+</sup> 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_cicreate(context: Context, source: object): DataObject 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci创建一个分布式数据对象。 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci**参数:** 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 27e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | 28e41f4b71Sopenharmony_ci | context | Context | 是 | 应用的上下文。 <br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 29e41f4b71Sopenharmony_ci | source | object | 是 | 设置分布式数据对象的属性。 | 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci**返回值:** 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci| 类型 | 说明 | 34e41f4b71Sopenharmony_ci| -------- | -------- | 35e41f4b71Sopenharmony_ci| [DataObject](#dataobject) | 创建完成的分布式数据对象。 | 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci**错误码:** 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 42e41f4b71Sopenharmony_ci | -------- | -------- | 43e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci**示例:** 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ciFA模型示例: 48e41f4b71Sopenharmony_ci<!--code_no_check_fa--> 49e41f4b71Sopenharmony_ci```ts 50e41f4b71Sopenharmony_ci// 导入模块 51e41f4b71Sopenharmony_ciimport { featureAbility } from '@kit.AbilityKit'; 52e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 53e41f4b71Sopenharmony_ci// 获取context 54e41f4b71Sopenharmony_cilet context = featureAbility.getContext(); 55e41f4b71Sopenharmony_ciclass SourceObject { 56e41f4b71Sopenharmony_ci name: string 57e41f4b71Sopenharmony_ci age: number 58e41f4b71Sopenharmony_ci isVis: boolean 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci constructor(name: string, age: number, isVis: boolean) { 61e41f4b71Sopenharmony_ci this.name = name 62e41f4b71Sopenharmony_ci this.age = age 63e41f4b71Sopenharmony_ci this.isVis = isVis 64e41f4b71Sopenharmony_ci } 65e41f4b71Sopenharmony_ci} 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_cilet source: SourceObject = new SourceObject("jack", 18, false); 68e41f4b71Sopenharmony_cilet g_object: distributedDataObject.DataObject = distributedDataObject.create(context, source); 69e41f4b71Sopenharmony_ci``` 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ciStage模型示例: 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci```ts 74e41f4b71Sopenharmony_ci// 导入模块 75e41f4b71Sopenharmony_ciimport { UIAbility } from '@kit.AbilityKit'; 76e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 77e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI'; 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_cilet g_object: distributedDataObject.DataObject|null = null; 80e41f4b71Sopenharmony_ciclass SourceObject { 81e41f4b71Sopenharmony_ci name: string 82e41f4b71Sopenharmony_ci age: number 83e41f4b71Sopenharmony_ci isVis: boolean 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci constructor(name: string, age: number, isVis: boolean) { 86e41f4b71Sopenharmony_ci this.name = name 87e41f4b71Sopenharmony_ci this.age = age 88e41f4b71Sopenharmony_ci this.isVis = isVis 89e41f4b71Sopenharmony_ci } 90e41f4b71Sopenharmony_ci} 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility { 93e41f4b71Sopenharmony_ci onWindowStageCreate(windowStage: window.WindowStage) { 94e41f4b71Sopenharmony_ci let source: SourceObject = new SourceObject("jack", 18, false); 95e41f4b71Sopenharmony_ci g_object = distributedDataObject.create(this.context, source); 96e41f4b71Sopenharmony_ci } 97e41f4b71Sopenharmony_ci} 98e41f4b71Sopenharmony_ci``` 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci## distributedDataObject.genSessionId 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_cigenSessionId(): string 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci随机创建一个sessionId。 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci**返回值:** 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci | 类型 | 说明 | 111e41f4b71Sopenharmony_ci | -------- | -------- | 112e41f4b71Sopenharmony_ci | string | 随机创建的sessionId。 | 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci**示例:** 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci```ts 117e41f4b71Sopenharmony_cilet sessionId: string = distributedDataObject.genSessionId(); 118e41f4b71Sopenharmony_ci``` 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci## SaveSuccessResponse<sup>9+</sup> 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci[save](#save9)接口回调信息。 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 127e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 128e41f4b71Sopenharmony_ci| sessionId | string | 是 | 多设备协同的唯一标识。 | 129e41f4b71Sopenharmony_ci| version | number | 是 | 已保存对象的版本。 | 130e41f4b71Sopenharmony_ci| deviceId | string | 是 | 存储数据的设备号,标识需要保存对象的设备。"local"表示本地设备,否则表示其他设备的设备号。 | 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci## RevokeSaveSuccessResponse<sup>9+</sup> 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci[revokeSave](#revokesave9)接口回调信息。 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 139e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 140e41f4b71Sopenharmony_ci| sessionId | string | 是 | 多设备协同的唯一标识。 | 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci## BindInfo<sup>11+</sup> 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci数据库的绑定信息。当前版本只支持关系型数据库。 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci | 名称 | 类型 | 只读 | 可选 | 说明 | 149e41f4b71Sopenharmony_ci | ---------- | ------------------------------------------------------------------ | ---- | ---- | ------------------------------------ | 150e41f4b71Sopenharmony_ci | storeName | string | 否 | 否 | 待绑定资产在所属的数据库中的库名。 | 151e41f4b71Sopenharmony_ci | tableName | string | 否 | 否 | 待绑定资产在所属的数据库中的表名。 | 152e41f4b71Sopenharmony_ci | primaryKey | [commonType.ValuesBucket](js-apis-data-commonType.md#valuesbucket) | 否 | 否 | 待绑定资产在所属的数据库中的主键。 | 153e41f4b71Sopenharmony_ci | field | string | 否 | 否 | 待绑定资产在所属的数据库中的列名。 | 154e41f4b71Sopenharmony_ci | assetName | string | 否 | 否 | 待绑定资产在所属的数据库中的资产名。 | 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci## DataObject 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci表示一个分布式数据对象。在使用以下接口前,需调用[create()](#distributeddataobjectcreate9)获取DataObject对象。 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ci### setSessionId<sup>9+</sup> 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_cisetSessionId(sessionId: string, callback: AsyncCallback<void>): void 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci设置sessionId,使用callback方式异步回调。当可信组网中有多个设备处于协同状态时,如果多个设备间的分布式对象设置为同一个sessionId,就能自动同步。 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci**参数:** 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 173e41f4b71Sopenharmony_ci | --------- | ------------------------- | ---- | -------------------------------------------------------------------------------------------------------------- | 174e41f4b71Sopenharmony_ci | sessionId | string | 是 | 分布式数据对象在可信组网中的标识ID,长度不大于128,且只能包含字母数字或下划线_。设置为""时表示退出分布式组网。 | 175e41f4b71Sopenharmony_ci | callback | AsyncCallback<void> | 是 | 加入session的异步回调。 | 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci**错误码:** 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[分布式数据对象错误码](errorcode-distributed-dataObject.md)。 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 182e41f4b71Sopenharmony_ci | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 183e41f4b71Sopenharmony_ci | 201 | Permission verification failed. | 184e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Incorrect parameter types; 2. The sessionId allows only letters, digits, and underscores(_), and cannot exceed 128 in length. | 185e41f4b71Sopenharmony_ci | 15400001 | Create table failed. | 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_ci**示例:** 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci```ts 190e41f4b71Sopenharmony_ci// g_object加入分布式组网 191e41f4b71Sopenharmony_cig_object.setSessionId(distributedDataObject.genSessionId(), ()=>{ 192e41f4b71Sopenharmony_ci console.info("join session"); 193e41f4b71Sopenharmony_ci}); 194e41f4b71Sopenharmony_ci// g_object退出分布式组网 195e41f4b71Sopenharmony_cig_object.setSessionId("", ()=>{ 196e41f4b71Sopenharmony_ci console.info("leave all session"); 197e41f4b71Sopenharmony_ci}); 198e41f4b71Sopenharmony_ci``` 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci### setSessionId<sup>9+</sup> 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_cisetSessionId(callback: AsyncCallback<void>): void 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci退出所有已加入的session,使用callback方式异步回调。 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci**参数:** 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 213e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | 214e41f4b71Sopenharmony_ci | callback | AsyncCallback<void> | 是 | 退出所有已加入session的异步回调。 | 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci**错误码:** 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[分布式数据对象错误码](errorcode-distributed-dataObject.md)。 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 221e41f4b71Sopenharmony_ci | -------- | -------- | 222e41f4b71Sopenharmony_ci | 201 | Permission verification failed. | 223e41f4b71Sopenharmony_ci | 401 | Parameter error. Incorrect parameter types. | 224e41f4b71Sopenharmony_ci | 15400001 | Create table failed. | 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci**示例:** 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci```ts 229e41f4b71Sopenharmony_ci// g_object加入分布式组网 230e41f4b71Sopenharmony_cig_object.setSessionId(distributedDataObject.genSessionId(), ()=>{ 231e41f4b71Sopenharmony_ci console.info("join session"); 232e41f4b71Sopenharmony_ci}); 233e41f4b71Sopenharmony_ci// 退出分布式组网 234e41f4b71Sopenharmony_cig_object.setSessionId(() => { 235e41f4b71Sopenharmony_ci console.info("leave all session."); 236e41f4b71Sopenharmony_ci}); 237e41f4b71Sopenharmony_ci``` 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci### setSessionId<sup>9+</sup> 240e41f4b71Sopenharmony_ci 241e41f4b71Sopenharmony_cisetSessionId(sessionId?: string): Promise<void> 242e41f4b71Sopenharmony_ci 243e41f4b71Sopenharmony_ci设置sessionId,使用Promise异步返回。当可信组网中有多个设备处于协同状态时,如果多个设备间的分布式对象设置为同一个sessionId,就能自动同步。 244e41f4b71Sopenharmony_ci 245e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci**参数:** 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 252e41f4b71Sopenharmony_ci | --------- | ------ | ---- | ---------------------------------------------------------------------------------------------------------------------------- | 253e41f4b71Sopenharmony_ci | sessionId | string | 否 | 分布式数据对象在可信组网中的标识ID,长度不大于128,且只能包含字母数字或下划线_。如果要退出分布式组网,设置为""或不设置均可。 | 254e41f4b71Sopenharmony_ci 255e41f4b71Sopenharmony_ci**返回值:** 256e41f4b71Sopenharmony_ci 257e41f4b71Sopenharmony_ci| 类型 | 说明 | 258e41f4b71Sopenharmony_ci| -------- | -------- | 259e41f4b71Sopenharmony_ci| Promise<void> | Promise对象。| 260e41f4b71Sopenharmony_ci 261e41f4b71Sopenharmony_ci**错误码:** 262e41f4b71Sopenharmony_ci 263e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[分布式数据对象错误码](errorcode-distributed-dataObject.md)。 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 266e41f4b71Sopenharmony_ci | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 267e41f4b71Sopenharmony_ci | 201 | Permission verification failed. | 268e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Incorrect parameter types; 2. The sessionId allows only letters, digits, and underscores(_), and cannot exceed 128 in length. | 269e41f4b71Sopenharmony_ci | 15400001 | Create table failed. | 270e41f4b71Sopenharmony_ci 271e41f4b71Sopenharmony_ci**示例:** 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci```ts 274e41f4b71Sopenharmony_ci// g_object加入分布式组网 275e41f4b71Sopenharmony_cig_object.setSessionId(distributedDataObject.genSessionId()).then (()=>{ 276e41f4b71Sopenharmony_ci console.info("join session."); 277e41f4b71Sopenharmony_ci }).catch((error: BusinessError)=>{ 278e41f4b71Sopenharmony_ci console.info("error:" + error.code + error.message); 279e41f4b71Sopenharmony_ci}); 280e41f4b71Sopenharmony_ci// 退出分布式组网 281e41f4b71Sopenharmony_cig_object.setSessionId().then (()=>{ 282e41f4b71Sopenharmony_ci console.info("leave all session."); 283e41f4b71Sopenharmony_ci }).catch((error: BusinessError)=>{ 284e41f4b71Sopenharmony_ci console.info("error:" + error.code + error.message); 285e41f4b71Sopenharmony_ci}); 286e41f4b71Sopenharmony_ci``` 287e41f4b71Sopenharmony_ci 288e41f4b71Sopenharmony_ci### on('change')<sup>9+</sup> 289e41f4b71Sopenharmony_ci 290e41f4b71Sopenharmony_cion(type: 'change', callback: (sessionId: string, fields: Array<string>) => void): void 291e41f4b71Sopenharmony_ci 292e41f4b71Sopenharmony_ci监听分布式数据对象的数据变更。 293e41f4b71Sopenharmony_ci 294e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 295e41f4b71Sopenharmony_ci 296e41f4b71Sopenharmony_ci**参数:** 297e41f4b71Sopenharmony_ci 298e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 299e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 300e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'change',表示数据变更。 | 301e41f4b71Sopenharmony_ci| callback | Function | 是 | 变更回调对象实例。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 | 302e41f4b71Sopenharmony_ci 303e41f4b71Sopenharmony_ci**错误码:** 304e41f4b71Sopenharmony_ci 305e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 306e41f4b71Sopenharmony_ci 307e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 308e41f4b71Sopenharmony_ci | -------- | -------- | 309e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_ci**示例:** 312e41f4b71Sopenharmony_ci 313e41f4b71Sopenharmony_ci```ts 314e41f4b71Sopenharmony_cig_object.on("change", (sessionId: string, fields: Array<string>) => { 315e41f4b71Sopenharmony_ci console.info("change" + sessionId); 316e41f4b71Sopenharmony_ci if (g_object != null && fields != null && fields != undefined) { 317e41f4b71Sopenharmony_ci for (let index: number = 0; index < fields.length; index++) { 318e41f4b71Sopenharmony_ci console.info("changed !" + fields[index] + " " + g_object[fields[index]]); 319e41f4b71Sopenharmony_ci } 320e41f4b71Sopenharmony_ci } 321e41f4b71Sopenharmony_ci}); 322e41f4b71Sopenharmony_ci``` 323e41f4b71Sopenharmony_ci 324e41f4b71Sopenharmony_ci### off('change')<sup>9+</sup> 325e41f4b71Sopenharmony_ci 326e41f4b71Sopenharmony_cioff(type: 'change', callback?: (sessionId: string, fields: Array<string>) => void): void 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci当不再进行数据变更监听时,使用此接口删除对象的变更监听。 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 331e41f4b71Sopenharmony_ci 332e41f4b71Sopenharmony_ci**参数:** 333e41f4b71Sopenharmony_ci 334e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 335e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 336e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'change',表示数据变更。 | 337e41f4b71Sopenharmony_ci| callback | Function | 否 | 需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 | 338e41f4b71Sopenharmony_ci 339e41f4b71Sopenharmony_ci**错误码:** 340e41f4b71Sopenharmony_ci 341e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 342e41f4b71Sopenharmony_ci 343e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 344e41f4b71Sopenharmony_ci | -------- | -------- | 345e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 346e41f4b71Sopenharmony_ci 347e41f4b71Sopenharmony_ci**示例:** 348e41f4b71Sopenharmony_ci 349e41f4b71Sopenharmony_ci```ts 350e41f4b71Sopenharmony_ci// 删除数据变更回调changeCallback 351e41f4b71Sopenharmony_cig_object.off("change", (sessionId: string, fields: Array<string>) => { 352e41f4b71Sopenharmony_ci console.info("change" + sessionId); 353e41f4b71Sopenharmony_ci if (g_object != null && fields != null && fields != undefined) { 354e41f4b71Sopenharmony_ci for (let index: number = 0; index < fields.length; index++) { 355e41f4b71Sopenharmony_ci console.info("changed !" + fields[index] + " " + g_object[fields[index]]); 356e41f4b71Sopenharmony_ci } 357e41f4b71Sopenharmony_ci } 358e41f4b71Sopenharmony_ci}); 359e41f4b71Sopenharmony_ci// 删除所有的数据变更回调 360e41f4b71Sopenharmony_cig_object.off("change"); 361e41f4b71Sopenharmony_ci``` 362e41f4b71Sopenharmony_ci 363e41f4b71Sopenharmony_ci### on('status')<sup>9+</sup> 364e41f4b71Sopenharmony_ci 365e41f4b71Sopenharmony_cion(type: 'status', callback: (sessionId: string, networkId: string, status: 'online' \| 'offline' ) => void): void 366e41f4b71Sopenharmony_ci 367e41f4b71Sopenharmony_ci监听分布式数据对象的上下线。 368e41f4b71Sopenharmony_ci 369e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 370e41f4b71Sopenharmony_ci 371e41f4b71Sopenharmony_ci**参数:** 372e41f4b71Sopenharmony_ci 373e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 374e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 375e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | 376e41f4b71Sopenharmony_ci| callback | Function | 是 | 监听上下线回调实例。<br>sessionId:标识变更对象的sessionId; <br>networkId:标识对象设备; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 | 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci**错误码:** 379e41f4b71Sopenharmony_ci 380e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 381e41f4b71Sopenharmony_ci 382e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 383e41f4b71Sopenharmony_ci | -------- | -------- | 384e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 385e41f4b71Sopenharmony_ci 386e41f4b71Sopenharmony_ci**示例:** 387e41f4b71Sopenharmony_ci 388e41f4b71Sopenharmony_ci```ts 389e41f4b71Sopenharmony_cig_object.on("status", (sessionId: string, networkId: string, status: 'online' | 'offline') => { 390e41f4b71Sopenharmony_ci console.info("status changed " + sessionId + " " + status + " " + networkId); 391e41f4b71Sopenharmony_ci}); 392e41f4b71Sopenharmony_ci``` 393e41f4b71Sopenharmony_ci 394e41f4b71Sopenharmony_ci### off('status')<sup>9+</sup> 395e41f4b71Sopenharmony_ci 396e41f4b71Sopenharmony_cioff(type: 'status', callback?:(sessionId: string, networkId: string, status: 'online' \| 'offline') => void): void 397e41f4b71Sopenharmony_ci 398e41f4b71Sopenharmony_ci当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。 399e41f4b71Sopenharmony_ci 400e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 401e41f4b71Sopenharmony_ci 402e41f4b71Sopenharmony_ci**参数:** 403e41f4b71Sopenharmony_ci 404e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 405e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 406e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | 407e41f4b71Sopenharmony_ci| callback | Function | 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。<br>sessionId:标识变更对象的sessionId; <br>networkId:标识变更对象; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 | 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ci**错误码:** 410e41f4b71Sopenharmony_ci 411e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 412e41f4b71Sopenharmony_ci 413e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 414e41f4b71Sopenharmony_ci | -------- | -------- | 415e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 416e41f4b71Sopenharmony_ci 417e41f4b71Sopenharmony_ci**示例:** 418e41f4b71Sopenharmony_ci 419e41f4b71Sopenharmony_ci```ts 420e41f4b71Sopenharmony_ci// 删除上下线回调changeCallback 421e41f4b71Sopenharmony_cig_object.off("status", (sessionId: string, networkId: string, status: 'online' | 'offline') => { 422e41f4b71Sopenharmony_ci console.info("status changed " + sessionId + " " + status + " " + networkId); 423e41f4b71Sopenharmony_ci}); 424e41f4b71Sopenharmony_ci// 删除所有的上下线回调 425e41f4b71Sopenharmony_cig_object.off("status"); 426e41f4b71Sopenharmony_ci``` 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ci### save<sup>9+</sup> 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_cisave(deviceId: string, callback: AsyncCallback<SaveSuccessResponse>): void 431e41f4b71Sopenharmony_ci 432e41f4b71Sopenharmony_ci保存分布式数据对象。使用callback方式异步回调。 433e41f4b71Sopenharmony_ci 434e41f4b71Sopenharmony_ci对象数据保存成功后,当应用存在时不会释放对象数据,当应用退出后,重新进入应用时,恢复保存在设备上的数据。 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_ci有以下几种情况时,保存的数据将会被释放: 437e41f4b71Sopenharmony_ci 438e41f4b71Sopenharmony_ci- 存储时间超过24小时。 439e41f4b71Sopenharmony_ci- 应用卸载。 440e41f4b71Sopenharmony_ci- 成功恢复数据之后。 441e41f4b71Sopenharmony_ci 442e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 443e41f4b71Sopenharmony_ci 444e41f4b71Sopenharmony_ci**参数:** 445e41f4b71Sopenharmony_ci 446e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 447e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | 448e41f4b71Sopenharmony_ci | deviceId | string | 是 | 保存数据的deviceId,当deviceId为"local",代表存储在本地设备。 | 449e41f4b71Sopenharmony_ci | callback | AsyncCallback<[SaveSuccessResponse](#savesuccessresponse9)> | 是 | 回调函数。返回SaveSuccessResponse,包含sessionId、version、deviceId等信息。 | 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci**错误码:** 452e41f4b71Sopenharmony_ci 453e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 454e41f4b71Sopenharmony_ci 455e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 456e41f4b71Sopenharmony_ci | -------- | -------- | 457e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 458e41f4b71Sopenharmony_ci | 801 | Capability not supported. | 459e41f4b71Sopenharmony_ci 460e41f4b71Sopenharmony_ci**示例:** 461e41f4b71Sopenharmony_ci 462e41f4b71Sopenharmony_ci```ts 463e41f4b71Sopenharmony_cig_object.setSessionId("123456"); 464e41f4b71Sopenharmony_cig_object.save("local", (err: BusinessError, result:distributedDataObject.SaveSuccessResponse) => { 465e41f4b71Sopenharmony_ci if (err) { 466e41f4b71Sopenharmony_ci console.info("save failed, error code = " + err.code); 467e41f4b71Sopenharmony_ci console.info("save failed, error message: " + err.message); 468e41f4b71Sopenharmony_ci return; 469e41f4b71Sopenharmony_ci } 470e41f4b71Sopenharmony_ci console.info("save callback"); 471e41f4b71Sopenharmony_ci console.info("save sessionId: " + result.sessionId); 472e41f4b71Sopenharmony_ci console.info("save version: " + result.version); 473e41f4b71Sopenharmony_ci console.info("save deviceId: " + result.deviceId); 474e41f4b71Sopenharmony_ci}); 475e41f4b71Sopenharmony_ci``` 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci### save<sup>9+</sup> 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_cisave(deviceId: string): Promise<SaveSuccessResponse> 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci保存分布式数据对象。使用Promise方式作为异步回调。 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci对象数据保存成功后,当应用存在时不会释放对象数据,当应用退出后,重新进入应用时,恢复保存在设备上的数据。 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci有以下几种情况时,保存的数据将会被释放: 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ci- 存储时间超过24小时。 488e41f4b71Sopenharmony_ci- 应用卸载。 489e41f4b71Sopenharmony_ci- 成功恢复数据之后。 490e41f4b71Sopenharmony_ci 491e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 492e41f4b71Sopenharmony_ci 493e41f4b71Sopenharmony_ci**参数:** 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 496e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | 497e41f4b71Sopenharmony_ci | deviceId | string | 是 | 保存数据的设备号,当deviceId默认为"local",标识需要保存对象的设备。 | 498e41f4b71Sopenharmony_ci 499e41f4b71Sopenharmony_ci**返回值:** 500e41f4b71Sopenharmony_ci 501e41f4b71Sopenharmony_ci | 类型 | 说明 | 502e41f4b71Sopenharmony_ci | -------- | -------- | 503e41f4b71Sopenharmony_ci | Promise<[SaveSuccessResponse](#savesuccessresponse9)> | Promise对象。返回SaveSuccessResponse,包含sessionId、version、deviceId等信息。| 504e41f4b71Sopenharmony_ci 505e41f4b71Sopenharmony_ci**错误码:** 506e41f4b71Sopenharmony_ci 507e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 508e41f4b71Sopenharmony_ci 509e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 510e41f4b71Sopenharmony_ci | -------- | -------- | 511e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 512e41f4b71Sopenharmony_ci | 801 | Capability not supported. | 513e41f4b71Sopenharmony_ci 514e41f4b71Sopenharmony_ci**示例:** 515e41f4b71Sopenharmony_ci 516e41f4b71Sopenharmony_ci```ts 517e41f4b71Sopenharmony_cig_object.setSessionId("123456"); 518e41f4b71Sopenharmony_cig_object.save("local").then((result: distributedDataObject.SaveSuccessResponse) => { 519e41f4b71Sopenharmony_ci console.info("save callback"); 520e41f4b71Sopenharmony_ci console.info("save sessionId " + result.sessionId); 521e41f4b71Sopenharmony_ci console.info("save version " + result.version); 522e41f4b71Sopenharmony_ci console.info("save deviceId " + result.deviceId); 523e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 524e41f4b71Sopenharmony_ci console.info("save failed, error code = " + err.code); 525e41f4b71Sopenharmony_ci console.info("save failed, error message: " + err.message); 526e41f4b71Sopenharmony_ci}); 527e41f4b71Sopenharmony_ci``` 528e41f4b71Sopenharmony_ci 529e41f4b71Sopenharmony_ci### revokeSave<sup>9+</sup> 530e41f4b71Sopenharmony_ci 531e41f4b71Sopenharmony_cirevokeSave(callback: AsyncCallback<RevokeSaveSuccessResponse>): void 532e41f4b71Sopenharmony_ci 533e41f4b71Sopenharmony_ci撤回保存的分布式数据对象。使用callback方式作为异步方法。 534e41f4b71Sopenharmony_ci 535e41f4b71Sopenharmony_ci如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。 536e41f4b71Sopenharmony_ci如果对象保存在其他设备,那么将删除本地设备上的数据。 537e41f4b71Sopenharmony_ci 538e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 539e41f4b71Sopenharmony_ci 540e41f4b71Sopenharmony_ci**参数:** 541e41f4b71Sopenharmony_ci 542e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 543e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | 544e41f4b71Sopenharmony_ci | callback | AsyncCallback<[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)> | 是 | 回调函数。返回RevokeSaveSuccessResponse,包含sessionId。 | 545e41f4b71Sopenharmony_ci 546e41f4b71Sopenharmony_ci**错误码:** 547e41f4b71Sopenharmony_ci 548e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 549e41f4b71Sopenharmony_ci 550e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 551e41f4b71Sopenharmony_ci | -------- | -------- | 552e41f4b71Sopenharmony_ci | 401 | Parameter error. Incorrect parameter types. | 553e41f4b71Sopenharmony_ci | 801 | Capability not supported. | 554e41f4b71Sopenharmony_ci 555e41f4b71Sopenharmony_ci**示例:** 556e41f4b71Sopenharmony_ci 557e41f4b71Sopenharmony_ci```ts 558e41f4b71Sopenharmony_cig_object.setSessionId("123456"); 559e41f4b71Sopenharmony_ci// 持久化数据 560e41f4b71Sopenharmony_cig_object.save("local", (err: BusinessError, result: distributedDataObject.SaveSuccessResponse) => { 561e41f4b71Sopenharmony_ci if (err) { 562e41f4b71Sopenharmony_ci console.info("save failed, error code = " + err.code); 563e41f4b71Sopenharmony_ci console.info("save failed, error message: " + err.message); 564e41f4b71Sopenharmony_ci return; 565e41f4b71Sopenharmony_ci } 566e41f4b71Sopenharmony_ci console.info("save callback"); 567e41f4b71Sopenharmony_ci console.info("save sessionId: " + result.sessionId); 568e41f4b71Sopenharmony_ci console.info("save version: " + result.version); 569e41f4b71Sopenharmony_ci console.info("save deviceId: " + result.deviceId); 570e41f4b71Sopenharmony_ci}); 571e41f4b71Sopenharmony_ci// 删除持久化保存的数据 572e41f4b71Sopenharmony_cig_object.revokeSave((err: BusinessError, result: distributedDataObject.RevokeSaveSuccessResponse) => { 573e41f4b71Sopenharmony_ci if (err) { 574e41f4b71Sopenharmony_ci console.info("revokeSave failed, error code = " + err.code); 575e41f4b71Sopenharmony_ci console.info("revokeSave failed, error message: " + err.message); 576e41f4b71Sopenharmony_ci return; 577e41f4b71Sopenharmony_ci } 578e41f4b71Sopenharmony_ci console.info("revokeSave callback"); 579e41f4b71Sopenharmony_ci console.info("revokeSave sessionId " + result.sessionId); 580e41f4b71Sopenharmony_ci}); 581e41f4b71Sopenharmony_ci``` 582e41f4b71Sopenharmony_ci 583e41f4b71Sopenharmony_ci### revokeSave<sup>9+</sup> 584e41f4b71Sopenharmony_ci 585e41f4b71Sopenharmony_cirevokeSave(): Promise<RevokeSaveSuccessResponse> 586e41f4b71Sopenharmony_ci 587e41f4b71Sopenharmony_ci撤回保存的分布式数据对象。使用Promise方式作为异步方法。 588e41f4b71Sopenharmony_ci 589e41f4b71Sopenharmony_ci如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。 590e41f4b71Sopenharmony_ci如果对象保存在其他设备,那么将删除本地设备上的数据。 591e41f4b71Sopenharmony_ci 592e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 593e41f4b71Sopenharmony_ci 594e41f4b71Sopenharmony_ci**返回值:** 595e41f4b71Sopenharmony_ci 596e41f4b71Sopenharmony_ci | 类型 | 说明 | 597e41f4b71Sopenharmony_ci | -------- | -------- | 598e41f4b71Sopenharmony_ci | Promise<[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)> | Promise对象。返回RevokeSaveSuccessResponse,包含sessionId。 | 599e41f4b71Sopenharmony_ci 600e41f4b71Sopenharmony_ci**错误码:** 601e41f4b71Sopenharmony_ci 602e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 603e41f4b71Sopenharmony_ci 604e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 605e41f4b71Sopenharmony_ci | -------- | -------- | 606e41f4b71Sopenharmony_ci | 801 | Capability not supported. | 607e41f4b71Sopenharmony_ci 608e41f4b71Sopenharmony_ci**示例:** 609e41f4b71Sopenharmony_ci 610e41f4b71Sopenharmony_ci```ts 611e41f4b71Sopenharmony_cig_object.setSessionId("123456"); 612e41f4b71Sopenharmony_ci// 持久化数据 613e41f4b71Sopenharmony_cig_object.save("local").then((result: distributedDataObject.SaveSuccessResponse) => { 614e41f4b71Sopenharmony_ci console.info("save callback"); 615e41f4b71Sopenharmony_ci console.info("save sessionId " + result.sessionId); 616e41f4b71Sopenharmony_ci console.info("save version " + result.version); 617e41f4b71Sopenharmony_ci console.info("save deviceId " + result.deviceId); 618e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 619e41f4b71Sopenharmony_ci console.info("save failed, error code = " + err.code); 620e41f4b71Sopenharmony_ci console.info("save failed, error message: " + err.message); 621e41f4b71Sopenharmony_ci}); 622e41f4b71Sopenharmony_ci// 删除持久化保存的数据 623e41f4b71Sopenharmony_cig_object.revokeSave().then((result: distributedDataObject.RevokeSaveSuccessResponse) => { 624e41f4b71Sopenharmony_ci console.info("revokeSave callback"); 625e41f4b71Sopenharmony_ci console.info("sessionId" + result.sessionId); 626e41f4b71Sopenharmony_ci}).catch((err: BusinessError)=> { 627e41f4b71Sopenharmony_ci console.info("revokeSave failed, error code = " + err.code); 628e41f4b71Sopenharmony_ci console.info("revokeSave failed, error message = " + err.message); 629e41f4b71Sopenharmony_ci}); 630e41f4b71Sopenharmony_ci``` 631e41f4b71Sopenharmony_ci 632e41f4b71Sopenharmony_ci### bindAssetStore<sup>11+</sup> 633e41f4b71Sopenharmony_ci 634e41f4b71Sopenharmony_cibindAssetStore(assetKey: string, bindInfo: BindInfo, callback: AsyncCallback<void>): void 635e41f4b71Sopenharmony_ci 636e41f4b71Sopenharmony_ci绑定分布式对象中的单个资产与其对应的数据库信息,当前版本只支持分布式对象中的资产与关系型数据库的绑定。使用callback方式异步回调。 637e41f4b71Sopenharmony_ci 638e41f4b71Sopenharmony_ci当分布式对象中包含的资产和关系型数据库中包含的资产指向同一个实体资产文件,即两个资产的Uri相同时,就会存在冲突,我们把这种资产称为融合资产。如果需要分布式数据管理进行融合资产的冲突解决,需要先进行资产的绑定。当应用退出session后,绑定关系随之消失。 639e41f4b71Sopenharmony_ci 640e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 641e41f4b71Sopenharmony_ci 642e41f4b71Sopenharmony_ci**参数:** 643e41f4b71Sopenharmony_ci 644e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 645e41f4b71Sopenharmony_ci | -------- | ------------------------- | ---- | ---------------------------------------------------------------------------------- | 646e41f4b71Sopenharmony_ci | assetKey | string | 是 | 待绑定的融合资产在分布式对象中的键值。 | 647e41f4b71Sopenharmony_ci | bindInfo | [BindInfo](#bindinfo11) | 是 | 待绑定的融合资产在数据库中的信息,包含库名、表名、主键、列名及在数据库中的资产名。 | 648e41f4b71Sopenharmony_ci | callback | AsyncCallback<void> | 是 | 绑定数据库的回调。 | 649e41f4b71Sopenharmony_ci 650e41f4b71Sopenharmony_ci**错误码:** 651e41f4b71Sopenharmony_ci 652e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 653e41f4b71Sopenharmony_ci 654e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 655e41f4b71Sopenharmony_ci | -------- | -------- | 656e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 657e41f4b71Sopenharmony_ci | 801 | Capability not supported. | 658e41f4b71Sopenharmony_ci 659e41f4b71Sopenharmony_ci**示例:** 660e41f4b71Sopenharmony_ci 661e41f4b71Sopenharmony_ci```ts 662e41f4b71Sopenharmony_ciimport { UIAbility } from '@kit.AbilityKit'; 663e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI'; 664e41f4b71Sopenharmony_ciimport { commonType } from '@kit.ArkData'; 665e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 666e41f4b71Sopenharmony_ci 667e41f4b71Sopenharmony_ciclass Note { 668e41f4b71Sopenharmony_ci title: string | undefined 669e41f4b71Sopenharmony_ci text: string | undefined 670e41f4b71Sopenharmony_ci attachment: commonType.Asset | undefined 671e41f4b71Sopenharmony_ci 672e41f4b71Sopenharmony_ci constructor(title: string | undefined, text: string | undefined, attachment: commonType.Asset | undefined) { 673e41f4b71Sopenharmony_ci this.title = title; 674e41f4b71Sopenharmony_ci this.text = text; 675e41f4b71Sopenharmony_ci this.attachment = attachment; 676e41f4b71Sopenharmony_ci } 677e41f4b71Sopenharmony_ci} 678e41f4b71Sopenharmony_ci 679e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility { 680e41f4b71Sopenharmony_ci onWindowStageCreate(windowStage: window.WindowStage) { 681e41f4b71Sopenharmony_ci let attachment: commonType.Asset = { 682e41f4b71Sopenharmony_ci name: 'test_img.jpg', 683e41f4b71Sopenharmony_ci uri: 'file://com.example.myapplication/data/storage/el2/distributedfiles/dir/test_img.jpg', 684e41f4b71Sopenharmony_ci path: '/dir/test_img.jpg', 685e41f4b71Sopenharmony_ci createTime: '2024-01-02 10:00:00', 686e41f4b71Sopenharmony_ci modifyTime: '2024-01-02 10:00:00', 687e41f4b71Sopenharmony_ci size: '5', 688e41f4b71Sopenharmony_ci status: commonType.AssetStatus.ASSET_NORMAL 689e41f4b71Sopenharmony_ci } 690e41f4b71Sopenharmony_ci let note: Note = new Note('test', 'test', attachment); 691e41f4b71Sopenharmony_ci let g_object: distributedDataObject.DataObject = distributedDataObject.create(this.context, note); 692e41f4b71Sopenharmony_ci g_object.setSessionId('123456'); 693e41f4b71Sopenharmony_ci 694e41f4b71Sopenharmony_ci const bindInfo: distributedDataObject.BindInfo = { 695e41f4b71Sopenharmony_ci storeName: 'notepad', 696e41f4b71Sopenharmony_ci tableName: 'note_t', 697e41f4b71Sopenharmony_ci primaryKey: { 698e41f4b71Sopenharmony_ci 'uuid': '00000000-0000-0000-0000-000000000000' 699e41f4b71Sopenharmony_ci }, 700e41f4b71Sopenharmony_ci field: 'attachment', 701e41f4b71Sopenharmony_ci assetName: attachment.name as string 702e41f4b71Sopenharmony_ci } 703e41f4b71Sopenharmony_ci 704e41f4b71Sopenharmony_ci g_object.bindAssetStore('attachment', bindInfo, (err: BusinessError) => { 705e41f4b71Sopenharmony_ci if (err) { 706e41f4b71Sopenharmony_ci console.error('bindAssetStore failed.'); 707e41f4b71Sopenharmony_ci } 708e41f4b71Sopenharmony_ci console.info('bindAssetStore success.'); 709e41f4b71Sopenharmony_ci }); 710e41f4b71Sopenharmony_ci } 711e41f4b71Sopenharmony_ci} 712e41f4b71Sopenharmony_ci``` 713e41f4b71Sopenharmony_ci 714e41f4b71Sopenharmony_ci### bindAssetStore<sup>11+</sup> 715e41f4b71Sopenharmony_ci 716e41f4b71Sopenharmony_cibindAssetStore(assetKey: string, bindInfo: BindInfo): Promise<void> 717e41f4b71Sopenharmony_ci 718e41f4b71Sopenharmony_ci绑定分布式对象中的单个资产与其对应的数据库信息,当前版本只支持分布式对象中的资产与关系型数据库的绑定。使用Promise方式作为异步回调。 719e41f4b71Sopenharmony_ci 720e41f4b71Sopenharmony_ci当分布式对象中包含的资产和关系型数据库中包含的资产指向同一个实体资产文件,即两个资产的Uri相同时,就会存在冲突,我们把这种资产称为融合资产。如果需要分布式数据管理进行融合资产的冲突解决,需要先进行资产的绑定。当应用退出session后,绑定关系随之消失。 721e41f4b71Sopenharmony_ci 722e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 723e41f4b71Sopenharmony_ci 724e41f4b71Sopenharmony_ci**参数:** 725e41f4b71Sopenharmony_ci 726e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 727e41f4b71Sopenharmony_ci | -------- | ----------------------- | ---- | ---------------------------------------------------------------------------------- | 728e41f4b71Sopenharmony_ci | assetKey | string | 是 | 待绑定的融合资产在分布式对象中的键值。 | 729e41f4b71Sopenharmony_ci | bindInfo | [BindInfo](#bindinfo11) | 是 | 待绑定的融合资产在数据库中的信息,包含库名、表名、主键、列名及在数据库中的资产名。 | 730e41f4b71Sopenharmony_ci 731e41f4b71Sopenharmony_ci**返回值:** 732e41f4b71Sopenharmony_ci 733e41f4b71Sopenharmony_ci | 类型 | 说明 | 734e41f4b71Sopenharmony_ci | ------------------- | ------------- | 735e41f4b71Sopenharmony_ci | Promise<void> | 无返回结果的Promise对象。 | 736e41f4b71Sopenharmony_ci 737e41f4b71Sopenharmony_ci**错误码:** 738e41f4b71Sopenharmony_ci 739e41f4b71Sopenharmony_ci 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 740e41f4b71Sopenharmony_ci 741e41f4b71Sopenharmony_ci | 错误码ID | 错误信息 | 742e41f4b71Sopenharmony_ci | -------- | -------- | 743e41f4b71Sopenharmony_ci | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 744e41f4b71Sopenharmony_ci | 801 | Capability not supported. | 745e41f4b71Sopenharmony_ci 746e41f4b71Sopenharmony_ci**示例:** 747e41f4b71Sopenharmony_ci 748e41f4b71Sopenharmony_ci```ts 749e41f4b71Sopenharmony_ciimport { UIAbility } from '@kit.AbilityKit'; 750e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI'; 751e41f4b71Sopenharmony_ciimport { commonType } from '@kit.ArkData'; 752e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 753e41f4b71Sopenharmony_ci 754e41f4b71Sopenharmony_ciclass Note { 755e41f4b71Sopenharmony_ci title: string | undefined 756e41f4b71Sopenharmony_ci text: string | undefined 757e41f4b71Sopenharmony_ci attachment: commonType.Asset | undefined 758e41f4b71Sopenharmony_ci 759e41f4b71Sopenharmony_ci constructor(title: string | undefined, text: string | undefined, attachment: commonType.Asset | undefined) { 760e41f4b71Sopenharmony_ci this.title = title; 761e41f4b71Sopenharmony_ci this.text = text; 762e41f4b71Sopenharmony_ci this.attachment = attachment; 763e41f4b71Sopenharmony_ci } 764e41f4b71Sopenharmony_ci} 765e41f4b71Sopenharmony_ci 766e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility { 767e41f4b71Sopenharmony_ci onWindowStageCreate(windowStage: window.WindowStage) { 768e41f4b71Sopenharmony_ci let attachment: commonType.Asset = { 769e41f4b71Sopenharmony_ci name: 'test_img.jpg', 770e41f4b71Sopenharmony_ci uri: 'file://com.example.myapplication/data/storage/el2/distributedfiles/dir/test_img.jpg', 771e41f4b71Sopenharmony_ci path: '/dir/test_img.jpg', 772e41f4b71Sopenharmony_ci createTime: '2024-01-02 10:00:00', 773e41f4b71Sopenharmony_ci modifyTime: '2024-01-02 10:00:00', 774e41f4b71Sopenharmony_ci size: '5', 775e41f4b71Sopenharmony_ci status: commonType.AssetStatus.ASSET_NORMAL 776e41f4b71Sopenharmony_ci } 777e41f4b71Sopenharmony_ci let note: Note = new Note('test', 'test', attachment); 778e41f4b71Sopenharmony_ci let g_object: distributedDataObject.DataObject = distributedDataObject.create(this.context, note); 779e41f4b71Sopenharmony_ci g_object.setSessionId('123456'); 780e41f4b71Sopenharmony_ci 781e41f4b71Sopenharmony_ci const bindInfo: distributedDataObject.BindInfo = { 782e41f4b71Sopenharmony_ci storeName: 'notepad', 783e41f4b71Sopenharmony_ci tableName: 'note_t', 784e41f4b71Sopenharmony_ci primaryKey: { 785e41f4b71Sopenharmony_ci 'uuid': '00000000-0000-0000-0000-000000000000' 786e41f4b71Sopenharmony_ci }, 787e41f4b71Sopenharmony_ci field: 'attachment', 788e41f4b71Sopenharmony_ci assetName: attachment.name as string 789e41f4b71Sopenharmony_ci } 790e41f4b71Sopenharmony_ci 791e41f4b71Sopenharmony_ci g_object.bindAssetStore("attachment", bindInfo).then(() => { 792e41f4b71Sopenharmony_ci console.info('bindAssetStore success.'); 793e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 794e41f4b71Sopenharmony_ci console.error("bindAssetStore failed, error code = " + err.code); 795e41f4b71Sopenharmony_ci }); 796e41f4b71Sopenharmony_ci } 797e41f4b71Sopenharmony_ci} 798e41f4b71Sopenharmony_ci``` 799e41f4b71Sopenharmony_ci 800e41f4b71Sopenharmony_ci## distributedDataObject.createDistributedObject<sup>(deprecated)</sup> 801e41f4b71Sopenharmony_ci 802e41f4b71Sopenharmony_cicreateDistributedObject(source: object): DistributedObject 803e41f4b71Sopenharmony_ci 804e41f4b71Sopenharmony_ci 805e41f4b71Sopenharmony_ci创建一个分布式数据对象。 806e41f4b71Sopenharmony_ci 807e41f4b71Sopenharmony_ci> **说明:** 808e41f4b71Sopenharmony_ci> 809e41f4b71Sopenharmony_ci> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[distributedDataObject.create](#distributeddataobjectcreate9)替代。 810e41f4b71Sopenharmony_ci 811e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 812e41f4b71Sopenharmony_ci 813e41f4b71Sopenharmony_ci**参数:** 814e41f4b71Sopenharmony_ci 815e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 816e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | 817e41f4b71Sopenharmony_ci | source | object | 是 | 设置分布式数据对象的属性。 | 818e41f4b71Sopenharmony_ci 819e41f4b71Sopenharmony_ci**返回值:** 820e41f4b71Sopenharmony_ci 821e41f4b71Sopenharmony_ci| 类型 | 说明 | 822e41f4b71Sopenharmony_ci| -------- | -------- | 823e41f4b71Sopenharmony_ci| [DistributedObject](#distributedobjectdeprecated) | 创建完成的分布式数据对象。 | 824e41f4b71Sopenharmony_ci 825e41f4b71Sopenharmony_ci**示例:** 826e41f4b71Sopenharmony_ci 827e41f4b71Sopenharmony_ci```ts 828e41f4b71Sopenharmony_ciclass SourceObject { 829e41f4b71Sopenharmony_ci name: string 830e41f4b71Sopenharmony_ci age: number 831e41f4b71Sopenharmony_ci isVis: boolean 832e41f4b71Sopenharmony_ci 833e41f4b71Sopenharmony_ci constructor(name: string, age: number, isVis: boolean) { 834e41f4b71Sopenharmony_ci this.name = name 835e41f4b71Sopenharmony_ci this.age = age 836e41f4b71Sopenharmony_ci this.isVis = isVis 837e41f4b71Sopenharmony_ci } 838e41f4b71Sopenharmony_ci} 839e41f4b71Sopenharmony_ci 840e41f4b71Sopenharmony_cilet source: SourceObject = new SourceObject("jack", 18, false); 841e41f4b71Sopenharmony_cilet g_object: distributedDataObject.DistributedObject = distributedDataObject.createDistributedObject(source); 842e41f4b71Sopenharmony_ci``` 843e41f4b71Sopenharmony_ci 844e41f4b71Sopenharmony_ci## DistributedObject<sup>(deprecated)</sup> 845e41f4b71Sopenharmony_ci 846e41f4b71Sopenharmony_ci表示一个分布式数据对象。在使用以下接口前,需调用[createDistributedObject()](#distributeddataobjectcreatedistributedobjectdeprecated)获取DistributedObject对象。 847e41f4b71Sopenharmony_ci 848e41f4b71Sopenharmony_ci### setSessionId<sup>(deprecated)</sup> 849e41f4b71Sopenharmony_ci 850e41f4b71Sopenharmony_cisetSessionId(sessionId?: string): boolean 851e41f4b71Sopenharmony_ci 852e41f4b71Sopenharmony_ci设置sessionId。当可信组网中有多个设备处于协同状态时,如果多个设备间的分布式对象设置为同一个sessionId,就能自动同步。 853e41f4b71Sopenharmony_ci 854e41f4b71Sopenharmony_ci> **说明:** 855e41f4b71Sopenharmony_ci> 856e41f4b71Sopenharmony_ci> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[setSessionId](#setsessionid9)替代。 857e41f4b71Sopenharmony_ci 858e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 859e41f4b71Sopenharmony_ci 860e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 861e41f4b71Sopenharmony_ci 862e41f4b71Sopenharmony_ci**参数:** 863e41f4b71Sopenharmony_ci 864e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 865e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | 866e41f4b71Sopenharmony_ci | sessionId | string | 否 | 分布式数据对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。 | 867e41f4b71Sopenharmony_ci 868e41f4b71Sopenharmony_ci**返回值:** 869e41f4b71Sopenharmony_ci 870e41f4b71Sopenharmony_ci | 类型 | 说明 | 871e41f4b71Sopenharmony_ci | -------- | -------- | 872e41f4b71Sopenharmony_ci | boolean | true:标识设置sessionId成功。 <br>false:标识设置sessionId失败。 | 873e41f4b71Sopenharmony_ci 874e41f4b71Sopenharmony_ci**示例:** 875e41f4b71Sopenharmony_ci 876e41f4b71Sopenharmony_ci```ts 877e41f4b71Sopenharmony_ciclass SourceObject { 878e41f4b71Sopenharmony_ci name: string 879e41f4b71Sopenharmony_ci age: number 880e41f4b71Sopenharmony_ci isVis: boolean 881e41f4b71Sopenharmony_ci 882e41f4b71Sopenharmony_ci constructor(name: string, age: number, isVis: boolean) { 883e41f4b71Sopenharmony_ci this.name = name 884e41f4b71Sopenharmony_ci this.age = age 885e41f4b71Sopenharmony_ci this.isVis = isVis 886e41f4b71Sopenharmony_ci } 887e41f4b71Sopenharmony_ci} 888e41f4b71Sopenharmony_ci 889e41f4b71Sopenharmony_cilet source: SourceObject = new SourceObject("jack", 18, false); 890e41f4b71Sopenharmony_cilet g_object: distributedDataObject.DistributedObject = distributedDataObject.createDistributedObject(source); 891e41f4b71Sopenharmony_ci// g_object加入分布式组网 892e41f4b71Sopenharmony_cig_object.setSessionId(distributedDataObject.genSessionId()); 893e41f4b71Sopenharmony_ci// 设置为""退出分布式组网 894e41f4b71Sopenharmony_cig_object.setSessionId(""); 895e41f4b71Sopenharmony_ci``` 896e41f4b71Sopenharmony_ci 897e41f4b71Sopenharmony_ci### on('change')<sup>(deprecated)</sup> 898e41f4b71Sopenharmony_ci 899e41f4b71Sopenharmony_cion(type: 'change', callback: (sessionId: string, fields: Array<string>) => void): void 900e41f4b71Sopenharmony_ci 901e41f4b71Sopenharmony_ci监听分布式数据对象的变更。 902e41f4b71Sopenharmony_ci 903e41f4b71Sopenharmony_ci> **说明:** 904e41f4b71Sopenharmony_ci> 905e41f4b71Sopenharmony_ci> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[on('change')](#onchange9)替代。 906e41f4b71Sopenharmony_ci 907e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 908e41f4b71Sopenharmony_ci 909e41f4b71Sopenharmony_ci**参数:** 910e41f4b71Sopenharmony_ci 911e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 912e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 913e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'change',表示数据变更。 | 914e41f4b71Sopenharmony_ci| callback | Function | 是 | 变更回调对象实例。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 | 915e41f4b71Sopenharmony_ci 916e41f4b71Sopenharmony_ci**示例:** 917e41f4b71Sopenharmony_ci 918e41f4b71Sopenharmony_ci```ts 919e41f4b71Sopenharmony_ciclass SourceObject { 920e41f4b71Sopenharmony_ci name: string 921e41f4b71Sopenharmony_ci age: number 922e41f4b71Sopenharmony_ci isVis: boolean 923e41f4b71Sopenharmony_ci 924e41f4b71Sopenharmony_ci constructor(name: string, age: number, isVis: boolean) { 925e41f4b71Sopenharmony_ci this.name = name 926e41f4b71Sopenharmony_ci this.age = age 927e41f4b71Sopenharmony_ci this.isVis = isVis 928e41f4b71Sopenharmony_ci } 929e41f4b71Sopenharmony_ci} 930e41f4b71Sopenharmony_ci 931e41f4b71Sopenharmony_cilet source: SourceObject = new SourceObject("jack", 18, false); 932e41f4b71Sopenharmony_cilet g_object: distributedDataObject.DistributedObject = distributedDataObject.createDistributedObject(source); 933e41f4b71Sopenharmony_cig_object.on("change", (sessionId: string, fields: Array<string>) => { 934e41f4b71Sopenharmony_ci console.info("change" + sessionId); 935e41f4b71Sopenharmony_ci if (fields != null && fields != undefined) { 936e41f4b71Sopenharmony_ci for (let index: number = 0; index < fields.length; index++) { 937e41f4b71Sopenharmony_ci console.info("changed !" + fields[index] + " " + g_object[fields[index]]); 938e41f4b71Sopenharmony_ci } 939e41f4b71Sopenharmony_ci } 940e41f4b71Sopenharmony_ci}); 941e41f4b71Sopenharmony_ci``` 942e41f4b71Sopenharmony_ci 943e41f4b71Sopenharmony_ci### off('change')<sup>(deprecated)</sup> 944e41f4b71Sopenharmony_ci 945e41f4b71Sopenharmony_cioff(type: 'change', callback?: (sessionId: string, fields: Array<string>) => void): void 946e41f4b71Sopenharmony_ci 947e41f4b71Sopenharmony_ci当不再进行数据变更监听时,使用此接口删除对象的变更监听。 948e41f4b71Sopenharmony_ci 949e41f4b71Sopenharmony_ci> **说明:** 950e41f4b71Sopenharmony_ci> 951e41f4b71Sopenharmony_ci> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[off('change')](#offchange9)替代。 952e41f4b71Sopenharmony_ci 953e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 954e41f4b71Sopenharmony_ci 955e41f4b71Sopenharmony_ci**参数:** 956e41f4b71Sopenharmony_ci 957e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 958e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 959e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'change',表示数据变更。 | 960e41f4b71Sopenharmony_ci| callback | Function | 否 | 需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 | 961e41f4b71Sopenharmony_ci 962e41f4b71Sopenharmony_ci**示例:** 963e41f4b71Sopenharmony_ci 964e41f4b71Sopenharmony_ci```ts 965e41f4b71Sopenharmony_ciclass SourceObject { 966e41f4b71Sopenharmony_ci name: string 967e41f4b71Sopenharmony_ci age: number 968e41f4b71Sopenharmony_ci isVis: boolean 969e41f4b71Sopenharmony_ci 970e41f4b71Sopenharmony_ci constructor(name: string, age: number, isVis: boolean) { 971e41f4b71Sopenharmony_ci this.name = name 972e41f4b71Sopenharmony_ci this.age = age 973e41f4b71Sopenharmony_ci this.isVis = isVis 974e41f4b71Sopenharmony_ci } 975e41f4b71Sopenharmony_ci} 976e41f4b71Sopenharmony_ci 977e41f4b71Sopenharmony_cilet source: SourceObject = new SourceObject("jack", 18, false); 978e41f4b71Sopenharmony_cilet g_object: distributedDataObject.DistributedObject = distributedDataObject.createDistributedObject(source); 979e41f4b71Sopenharmony_ci// 删除数据变更回调changeCallback 980e41f4b71Sopenharmony_cig_object.off("change", (sessionId: string, fields: Array<string>) => { 981e41f4b71Sopenharmony_ci console.info("change" + sessionId); 982e41f4b71Sopenharmony_ci if (fields != null && fields != undefined) { 983e41f4b71Sopenharmony_ci for (let index: number = 0; index < fields.length; index++) { 984e41f4b71Sopenharmony_ci console.info("changed !" + fields[index] + " " + g_object[fields[index]]); 985e41f4b71Sopenharmony_ci } 986e41f4b71Sopenharmony_ci } 987e41f4b71Sopenharmony_ci}); 988e41f4b71Sopenharmony_ci// 删除所有的数据变更回调 989e41f4b71Sopenharmony_cig_object.off("change"); 990e41f4b71Sopenharmony_ci``` 991e41f4b71Sopenharmony_ci 992e41f4b71Sopenharmony_ci### on('status')<sup>(deprecated)</sup> 993e41f4b71Sopenharmony_ci 994e41f4b71Sopenharmony_cion(type: 'status', callback: (sessionId: string, networkId: string, status: 'online' | 'offline' ) => void): void 995e41f4b71Sopenharmony_ci 996e41f4b71Sopenharmony_ci监听分布式数据对象的上下线。 997e41f4b71Sopenharmony_ci 998e41f4b71Sopenharmony_ci> **说明:** 999e41f4b71Sopenharmony_ci> 1000e41f4b71Sopenharmony_ci> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[on('status')](#onstatus9)替代。 1001e41f4b71Sopenharmony_ci 1002e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 1003e41f4b71Sopenharmony_ci 1004e41f4b71Sopenharmony_ci**参数:** 1005e41f4b71Sopenharmony_ci 1006e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1007e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 1008e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | 1009e41f4b71Sopenharmony_ci| callback | Function | 是 | 监听上下线回调实例。<br>sessionId:标识变更对象的sessionId; <br>networkId:标识对象设备; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 | 1010e41f4b71Sopenharmony_ci 1011e41f4b71Sopenharmony_ci**示例:** 1012e41f4b71Sopenharmony_ci 1013e41f4b71Sopenharmony_ci```ts 1014e41f4b71Sopenharmony_ciclass SourceObject { 1015e41f4b71Sopenharmony_ci name: string 1016e41f4b71Sopenharmony_ci age: number 1017e41f4b71Sopenharmony_ci isVis: boolean 1018e41f4b71Sopenharmony_ci 1019e41f4b71Sopenharmony_ci constructor(name: string, age: number, isVis: boolean) { 1020e41f4b71Sopenharmony_ci this.name = name 1021e41f4b71Sopenharmony_ci this.age = age 1022e41f4b71Sopenharmony_ci this.isVis = isVis 1023e41f4b71Sopenharmony_ci } 1024e41f4b71Sopenharmony_ci} 1025e41f4b71Sopenharmony_ci 1026e41f4b71Sopenharmony_cilet source: SourceObject = new SourceObject("jack", 18, false); 1027e41f4b71Sopenharmony_cilet g_object: distributedDataObject.DistributedObject = distributedDataObject.createDistributedObject(source); 1028e41f4b71Sopenharmony_ci 1029e41f4b71Sopenharmony_cig_object.on("status", (sessionId: string, networkId: string, status: 'online' | 'offline') => { 1030e41f4b71Sopenharmony_ci console.info("status changed " + sessionId + " " + status + " " + networkId); 1031e41f4b71Sopenharmony_ci}); 1032e41f4b71Sopenharmony_ci``` 1033e41f4b71Sopenharmony_ci 1034e41f4b71Sopenharmony_ci### off('status')<sup>(deprecated)</sup> 1035e41f4b71Sopenharmony_ci 1036e41f4b71Sopenharmony_cioff(type: 'status', callback?: (sessionId: string, networkId: string, status: 'online' | 'offline' ) => void): void 1037e41f4b71Sopenharmony_ci 1038e41f4b71Sopenharmony_ci当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。 1039e41f4b71Sopenharmony_ci 1040e41f4b71Sopenharmony_ci> **说明:** 1041e41f4b71Sopenharmony_ci> 1042e41f4b71Sopenharmony_ci> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[off('status')](#offstatus9)替代。 1043e41f4b71Sopenharmony_ci 1044e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject 1045e41f4b71Sopenharmony_ci 1046e41f4b71Sopenharmony_ci**参数:** 1047e41f4b71Sopenharmony_ci 1048e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1049e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 1050e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | 1051e41f4b71Sopenharmony_ci| callback | Function | 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。<br>sessionId:标识变更对象的sessionId; <br>networkId:标识变更对象; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 | 1052e41f4b71Sopenharmony_ci 1053e41f4b71Sopenharmony_ci 1054e41f4b71Sopenharmony_ci**示例:** 1055e41f4b71Sopenharmony_ci 1056e41f4b71Sopenharmony_ci```ts 1057e41f4b71Sopenharmony_ciclass SourceObject { 1058e41f4b71Sopenharmony_ci name: string 1059e41f4b71Sopenharmony_ci age: number 1060e41f4b71Sopenharmony_ci isVis: boolean 1061e41f4b71Sopenharmony_ci 1062e41f4b71Sopenharmony_ci constructor(name: string, age: number, isVis: boolean) { 1063e41f4b71Sopenharmony_ci this.name = name 1064e41f4b71Sopenharmony_ci this.age = age 1065e41f4b71Sopenharmony_ci this.isVis = isVis 1066e41f4b71Sopenharmony_ci } 1067e41f4b71Sopenharmony_ci} 1068e41f4b71Sopenharmony_ci 1069e41f4b71Sopenharmony_cilet source: SourceObject = new SourceObject("jack", 18, false); 1070e41f4b71Sopenharmony_cilet g_object: distributedDataObject.DistributedObject = distributedDataObject.createDistributedObject(source); 1071e41f4b71Sopenharmony_ci// 删除上下线回调changeCallback 1072e41f4b71Sopenharmony_cig_object.off("status", (sessionId: string, networkId: string, status: 'online' | 'offline') => { 1073e41f4b71Sopenharmony_ci console.info("status changed " + sessionId + " " + status + " " + networkId); 1074e41f4b71Sopenharmony_ci}); 1075e41f4b71Sopenharmony_ci// 删除所有的上下线回调 1076e41f4b71Sopenharmony_cig_object.off("status"); 1077e41f4b71Sopenharmony_ci```