js-apis-data-distributedobject.md 7.8 KB
Newer Older
1
# 分布式数据对象
L
li_juntao 已提交
2

G
ge-yafang 已提交
3
> **说明:**
L
li_juntao 已提交
4 5 6 7 8 9
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

```js
G
ge-yafang 已提交
10
import distributedObject from '@ohos.data.distributedDataObject';
L
li_juntao 已提交
11 12 13 14 15 16 17
```

## distributedDataObject.createDistributedObject

createDistributedObject(source: object): DistributedObject


W
wuyongning 已提交
18
创建一个分布式对象。
W
wuyongning 已提交
19

G
ge-yafang 已提交
20
**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。
W
wuyongning 已提交
21

W
wuyongning 已提交
22
**参数:**
L
li_juntao 已提交
23 24
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
W
wuyongning 已提交
25
  | source | object | 是 | 设置distributedObject的属性。 |
G
ge-yafang 已提交
26

W
wuyongning 已提交
27
**返回值:**
G
ge-yafang 已提交
28 29 30
| 类型 | 说明 |
| -------- | -------- |
| [DistributedObject](#distributedobject) | 创建完成的分布式对象。 |
W
wuyongning 已提交
31 32

**示例:**
L
li_juntao 已提交
33
  ```js
34
  import distributedObject from '@ohos.data.distributedDataObject';
L
li_juntao 已提交
35 36 37 38 39 40 41 42 43 44
  // 创建对象,对象包含4个属性类型,string,number,boolean和Object
  var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, 
                 parent:{mother:"jack mom",father:"jack Dad"}});
  ```


## distributedObject.genSessionId()

genSessionId(): string

W
wuyongning 已提交
45
随机创建一个sessionId。
L
li_juntao 已提交
46

G
ge-yafang 已提交
47
**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。
L
li_juntao 已提交
48

W
wuyongning 已提交
49
**返回值:**
L
li_juntao 已提交
50 51 52 53
  | 类型 | 说明 |
  | -------- | -------- |
  | string | 随机创建的sessionId。 |

W
wuyongning 已提交
54
**示例:**
L
li_juntao 已提交
55
  ```js
56
  import distributedObject from '@ohos.data.distributedDataObject';
L
li_juntao 已提交
57 58 59 60 61 62 63
  var sessionId = distributedObject.genSessionId();
  ```


## DistributedObject

表示一个分布式对象。
64

L
li_juntao 已提交
65 66 67 68
### setSessionId

setSessionId(sessionId?: string): boolean

W
wuyongning 已提交
69
设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。
L
li_juntao 已提交
70

G
ge-yafang 已提交
71
**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。
W
wuyongning 已提交
72

W
wuyongning 已提交
73
**参数:**
74

L
li_juntao 已提交
75 76
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
W
wuyongning 已提交
77 78
  | sessionId | string | 否 | 分布式对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。 |

W
wuyongning 已提交
79
**返回值:**
80

W
wuyongning 已提交
81 82
  | 类型 | 说明 |
  | -------- | -------- |
W
wuyongning 已提交
83
  | boolean | true:标识设置sessionId成功; <br>false:标识设置sessionId失败。 |
G
ge-yafang 已提交
84

W
wuyongning 已提交
85
**示例:**
86

L
li_juntao 已提交
87
  ```js
88
  import distributedObject from '@ohos.data.distributedDataObject';
L
li_juntao 已提交
89 90 91 92 93 94 95 96 97 98 99 100 101
  var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, 
                 parent:{mother:"jack mom",father:"jack Dad"}});
  //g_object加入分布式组网
  g_object.setSessionId(distributedObject.genSessionId());
  //设置为""退出分布式组网
  g_object.setSessionId("");
  ```


### on('change')

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

W
wuyongning 已提交
102
监听分布式对象的变更。
L
li_juntao 已提交
103

G
ge-yafang 已提交
104
**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。
L
li_juntao 已提交
105

W
wuyongning 已提交
106
**参数:**
L
li_juntao 已提交
107 108 109
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 事件类型,固定为'change',表示数据变更。 |
W
wuyongning 已提交
110
  | callback | Callback<{ sessionId: string, fields: Array&lt;string&gt; }> | 是 | 变更回调对象实例。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 |
L
li_juntao 已提交
111

W
wuyongning 已提交
112
**示例:**
L
li_juntao 已提交
113
  ```js
114
  import distributedObject from '@ohos.data.distributedDataObject';
L
li_juntao 已提交
115 116
  var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, 
                 parent:{mother:"jack mom",father:"jack Dad"}});
W
wuyongning 已提交
117 118 119 120 121 122 123 124
  g_object.on("change", function (sessionId, changeData) {
      console.info("change" + sessionId);  
      if (changeData != null && changeData != undefined) {
          changeData.forEach(element => {
              console.info("changed !" + element + " " + g_object[element]);
          });
      }
  });
L
li_juntao 已提交
125 126 127 128 129 130
  ```

### off('change')

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

W
wuyongning 已提交
131
当不再进行数据变更监听时,使用此接口删除对象的变更监听。
L
li_juntao 已提交
132

G
ge-yafang 已提交
133
**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。
W
wuyongning 已提交
134

W
wuyongning 已提交
135
**参数:**
L
li_juntao 已提交
136 137 138
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 事件类型,固定为'change',表示数据变更。 |
139
  | callback | Callback<{ sessionId: string, fields: Array&lt;string&gt; }> | 否 | 需要删除的变更回调,若不设置则删除该对象所有的数据变更回调。<br>sessionId:标识变更对象的sessionId; <br>fields:标识对象变更的属性名。 |
L
li_juntao 已提交
140 141


W
wuyongning 已提交
142
**示例:**
L
li_juntao 已提交
143
  ```js
144
  import distributedObject from '@ohos.data.distributedDataObject';
L
li_juntao 已提交
145 146
  var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, 
                 parent:{mother:"jack mom",father:"jack Dad"}});
W
wuyongning 已提交
147 148 149
  g_object.on("change", function (sessionId, changeData) {
      console.info("change" + sessionId);
  });
150
  //删除数据变更回调changeCallback
W
wuyongning 已提交
151 152 153
  g_object.off("change", function (sessionId, changeData) {
      console.info("change" + sessionId);
  });
154
  //删除所有的数据变更回调
L
li_juntao 已提交
155 156 157 158 159 160 161
  g_object.off("change");
  ```

### on('status')

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

W
wuyongning 已提交
162
监听分布式对象的上下线。
L
li_juntao 已提交
163

G
ge-yafang 已提交
164
**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。
W
wuyongning 已提交
165

W
wuyongning 已提交
166
**参数:**
L
li_juntao 已提交
167 168 169
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 事件类型,固定为'status',表示对象上下线。 |
W
wuyongning 已提交
170
  | callback | Callback<{ sessionId: string, networkId: string, status: 'online' \| 'offline' }> | 是 | 监听上下线回调实例。<br>sessionId:标识变更对象的sessionId; <br>networkId:标识对象设备的networkId; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 |
W
wuyongning 已提交
171 172

**示例:**
L
li_juntao 已提交
173
  ```js
174
  import distributedObject from '@ohos.data.distributedDataObject';
L
li_juntao 已提交
175 176
  var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, 
                 parent:{mother:"jack mom",father:"jack Dad"}});
177
  g_object.on("status", function (sessionId, networkId, status) {
L
li_juntao 已提交
178
      this.response += "status changed " + sessionId + " " + status + " " + networkId;
W
wuyongning 已提交
179
  });
L
li_juntao 已提交
180 181 182 183 184 185 186
  ```

### off('status')

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


W
wuyongning 已提交
187
当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。
L
li_juntao 已提交
188

G
ge-yafang 已提交
189
**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。
L
li_juntao 已提交
190

W
wuyongning 已提交
191
**参数:**
L
li_juntao 已提交
192 193 194
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 事件类型,固定为'status',表示对象上下线。 |
W
wuyongning 已提交
195
  | callback | Callback<{ sessionId: string, deviceId: string, status: 'online' \| 'offline' }> | 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。<br>sessionId:标识变更对象的sessionId; <br>deviceId:标识变更对象的deviceId; <br>status:标识对象为'online'(上线)或'offline'(下线)的状态。 |
L
li_juntao 已提交
196 197


W
wuyongning 已提交
198
**示例:**
L
li_juntao 已提交
199
  ```js
200
  import distributedObject from '@ohos.data.distributedDataObject'; 
W
wuyongning 已提交
201
  g_object.on("status", function (sessionId, networkId, status) {
L
li_juntao 已提交
202
      this.response += "status changed " + sessionId + " " + status + " " + networkId;
W
wuyongning 已提交
203
  });
L
li_juntao 已提交
204
  //删除上下线回调changeCallback
W
wuyongning 已提交
205 206 207
  g_object.off("status", function (sessionId, networkId, status) {
      this.response += "status changed " + sessionId + " " + status + " " + networkId;
  });
L
li_juntao 已提交
208 209 210
  //删除所有的上下线回调
  g_object.off("status");
  ```