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&lt;void&gt;): void
163e41f4b71Sopenharmony_ci
164e41f4b71Sopenharmony_ci设置sessionId,使用callback方式异步回调。当可信组网中有多个设备处于协同状态时,如果多个设备间的分布式对象设置为同一个sessionId,就能自动同步。
165e41f4b71Sopenharmony_ci
166e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC167e41f4b71Sopenharmony_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&lt;void&gt; | 是   | 加入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&lt;void&gt;): void
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci退出所有已加入的session,使用callback方式异步回调。
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**参数:**
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
213e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
214e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;void&gt; | 是 | 退出所有已加入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&lt;void&gt;
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci设置sessionId,使用Promise异步返回。当可信组网中有多个设备处于协同状态时,如果多个设备间的分布式对象设置为同一个sessionId,就能自动同步。
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC246e41f4b71Sopenharmony_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&lt;void&gt; | 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&lt;string&gt;) => 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&lt;string&gt;) => 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&lt;SaveSuccessResponse&gt;): 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&lt;[SaveSuccessResponse](#savesuccessresponse9)&gt; | 是 | 回调函数。返回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&lt;SaveSuccessResponse&gt;
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&lt;[SaveSuccessResponse](#savesuccessresponse9)&gt; | 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&lt;RevokeSaveSuccessResponse&gt;): 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&lt;[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)&gt; | 是 | 回调函数。返回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&lt;RevokeSaveSuccessResponse&gt;
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&lt;[RevokeSaveSuccessResponse](#revokesavesuccessresponse9)&gt; | 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&lt;void&gt;): 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&lt;void&gt; | 是   | 绑定数据库的回调。                                                                 |
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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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_DATASYNC859e41f4b71Sopenharmony_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&lt;string&gt;) => 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&lt;string&gt;) => 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```