Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
a2427926
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a2427926
编写于
2月 18, 2022
作者:
L
li_juntao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add distributedobject docs
Signed-off-by:
N
li_juntao
<
lijuntao9@huawei.com
>
上级
9f90b23c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
46 addition
and
45 deletion
+46
-45
zh-cn/application-dev/database/database-distributedobject-guidelines.md
...ion-dev/database/database-distributedobject-guidelines.md
+32
-29
zh-cn/application-dev/database/database-distributedobject-overview.md
...ation-dev/database/database-distributedobject-overview.md
+3
-3
zh-cn/application-dev/reference/apis/js-apis-data-distributedobject.md
...tion-dev/reference/apis/js-apis-data-distributedobject.md
+11
-13
未找到文件。
zh-cn/application-dev/database/database-distributedobject-guidelines.md
浏览文件 @
a2427926
...
...
@@ -22,18 +22,18 @@
创建一个随机的sessionId,可将其设置为一个分布式数据对象的sessionId。
**表2**
分布式数据对象sessionId创建接口
| 包名 | 接口名 | 描述 |
| 包名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| ohos.data.distributedDataObject|
createDistributedObject(source: object): DistributedObject | 创建一个sessionId,可作为分布式数据对象的sessionId |
| ohos.data.distributedDataObject|
genSessionId(): string | 创建一个sessionId,可作为分布式数据对象的sessionId |
### 设置分布式数据对象sessionId
设置分布式数据对象的sessionId,sessionId是一次(多设备)协同的唯一标识,同步的多个数据对象需要关联同一个sessionId。
**表3**
分布式数据对象sessionId设置接口
|
包名 | 接口名 | 描述 |
|
类名 | 接口名 | 描述 |
| -------- | -------- | -------- |
|
ohos.data.distributedDataObject| setSessionId(sessionId?: string): boolean | 为分布式数据对象设置sessionId |
|
DistributedDataObject | setSessionId(sessionId?: string): boolean | 为分布式数据对象设置sessionId |
### 订阅数据变更
...
...
@@ -50,10 +50,10 @@
订阅数据对象上下线需要指定Callback作为回调方法,订阅的数据对象上线/下线后,对端的数据对象会收到Callback回调。
**表5**
分布式数据对象数据上下线订阅接口
| 类名 | 接口名 | 描述 |
| 类名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| DistributedDataObject| on(type: 'status', callback: Callback
<
{
sessionId:
string
,
networkId:
string
,
status:
'
online
'
\
\|
'
offline
'
}
>
): void | 订阅数据对象上下线。 |
| DistributedDataObject| off(type: 'status', callback?: Callback
<
{
sessionId:
string
,
deviceId:
string
,
status:
'
online
'
\
\
|
'
offline
'
}
>
): void | 注销订阅。 |
| DistributedDataObject| on(type: 'status', callback: Callback
<
{
sessionId:
string
,
networkId:
string
,
status:
'
online
'
\
|
'
offline
'
}
>
): void | 订阅数据对象上下线。 |
| DistributedDataObject| off(type: 'status', callback?: Callback
<
{
sessionId:
string
,
deviceId:
string
,
status:
'
online
'
\|
'
offline
'
}
>
): void | 注销订阅。 |
...
...
@@ -70,8 +70,8 @@
以下为创建分布式数据对象的代码示例:
```
js
var
local_object
=
distributedObject
.
createDistributedObject
({
{
name
:
undefined
,
age
:
undefined
,
isVis
:
true
,
parent
:
undefined
,
list
:
undefined
}
}
);
var
local_object
=
distributedObject
.
createDistributedObject
({
name
:
undefined
,
age
:
undefined
,
isVis
:
true
,
parent
:
undefined
,
list
:
undefined
});
```
...
...
@@ -79,25 +79,27 @@
以下为加入同步组网的代码示例:
发起方:
```
js
local_object
.
setSessionId
(
distributedObject
.
genSessionId
());
//将生成的local_object.__sessionId通过Intent传到对端设备
```
被拉起方:
```
js
//获取Intent中的sessionId
remote_object
.
setSessionId
(
sessionId
);
//发起方
var
local_object
=
distributedObject
.
createDistributedObject
({
name
:
"
jack
"
,
age
:
18
,
isVis
:
true
,
parent
:{
mother
:
"
jack mom
"
,
father
:
"
jack Dad
"
},[{
mother
:
"
jack mom
"
},
{
father
:
"
jack Dad
"
}]};
local_object
.
setsessionId
(
sessionId
);
//被发起方
var
remote_object
=
distributedObject
.
createDistributedObject
({
name
:
undefined
,
age
:
undefined
,
isVis
:
true
,
parent
:
undefined
,
list
:
undefined
});
remote_object
.
setsessionId
(
sessionId
);
//收到status上线后remote_object同步数据,即name变成jack,age是18
```
4.
监听对象数据变更。可
支持监听本地数据或对端数据的变更,以
callback作为变更回调实例。
4.
监听对象数据变更。可
监听对端数据的变更,以
callback作为变更回调实例。
以下为监听对象数据变更的代码示例。
```
js
changeCallback
:
function
(
sessionId
,
changeData
)
{
console
.
info
(
"
change
"
+
sessionId
);
if
(
changeData
!=
null
&&
changeData
!=
undefined
)
{
changeData
.
forEach
(
element
=>
{
console
.
info
(
"
changed !
"
+
element
+
"
"
+
local_object
[
element
]);
...
...
@@ -106,8 +108,7 @@
}
local_object
.
on
(
"
change
"
,
this
.
changeCallback
);
```
5.
修改对象属性,对象属性支持基本类型(数字类型、布尔类型、字符串类型)以及复杂类型(数组、基本类型嵌套等)。
以下为修改分布式数据对象属性的代码示例:
...
...
@@ -149,11 +150,11 @@
statusCallback
:
function
(
sessionId
,
networkid
,
status
)
{
this
.
response
+=
"
status changed
"
+
sessionId
+
"
"
+
status
+
"
"
+
networkId
;
}
local_object
.
on
(
"
status
"
,
this
.
changeCallback
);
```
9.
删除监听分布式对象的上下线。可以指定删除监听的上下线回调;也可以不指定,这将会删除该分布式数据对象的所有上下线回调。
以下为取消监听数据变更的代码示例:
```
js
//删除上下线回调changeCallback
...
...
@@ -162,12 +163,14 @@
local_object
.
off
(
"
status
"
);
```
10.
退出同步组网。分布式对象退出组网后,本地的数据变更对端不会同步。
以下为退出同步组网的代码示例:
```
js
local_object
.
setSessionId
(
""
);
```
以下为退出同步组网的代码示例:
```js
local_object.setSessionId("");
```
...
...
zh-cn/application-dev/database/database-distributedobject-overview.md
浏览文件 @
a2427926
...
...
@@ -12,13 +12,13 @@
-
**分布式数据对象**
分布式数据对象是一个JS对象型的封装,每一个分布式数据对象实例会创建一个内存数据库,每个应用程序创建的内存数据库相互隔离,对分布式数据对象的“读取”或“赋值”会自动映射到对应数据库的put/get操作。
分布式数据对象是一个JS对象型的封装,每一个分布式数据对象实例会创建一个内存数据库
中的数据表
,每个应用程序创建的内存数据库相互隔离,对分布式数据对象的“读取”或“赋值”会自动映射到对应数据库的put/get操作。
分布式数据对象的生命周期包括3个状态:
**未初始化**
、
**本地数据对象**
和
**分布式数据对象**
。
-
**未初始化**
:未实例化,或已被销毁。
-
**本地数据对象**
:已创建对应的
分布式内存数据库
,但是还无法进行数据同步。
-
**分布式数据对象**
:已创建对应的
分布式内存数据库,且设备在线(设备数=2),可以跨设备同步数据,若设备掉线
,分布式数据对象退化为本地数据对象。
-
**本地数据对象**
:已创建对应的
数据表
,但是还无法进行数据同步。
-
**分布式数据对象**
:已创建对应的
数据表,设备在线且组网内设置同样sessionId的对象数>=2,可以跨设备同步数据,若设备掉线或将sessionId置为空
,分布式数据对象退化为本地数据对象。
## 运作机制
...
...
zh-cn/application-dev/reference/apis/js-apis-data-distributedobject.md
浏览文件 @
a2427926
...
...
@@ -11,9 +11,9 @@ import distributedObject from '@ohos.data.distributedDataObject'
```
##
权限
##
系统能力
无
SystemCapability.DistributedDataManager.DataObject.DistributedObject
## distributedDataObject.createDistributedObject
...
...
@@ -27,7 +27,6 @@ createDistributedObject(source: object): DistributedObject
| -------- | -------- | -------- | -------- |
| object | source | 是 | 设置distributedObject的属性。 |
-
示例:
```
js
import
distributedObject
from
'
@ohos.data.distributedDataObject
'
...
...
@@ -70,7 +69,6 @@ setSessionId(sessionId?: string): boolean
| -------- | -------- | -------- | -------- |
| sessionId | string | 是 | 分布式对象在可信组网中的标识ID。 |
-
示例:
```
js
import
distributedObject
from
'
@ohos.data.distributedDataObject
'
...
...
@@ -103,7 +101,7 @@ on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<stri
parent
:{
mother
:
"
jack mom
"
,
father
:
"
jack Dad
"
}});
changeCallback
:
function
(
sessionId
,
changeData
)
{
console
.
info
(
"
change
"
+
sessionId
);
if
(
changeData
!=
null
&&
changeData
!=
undefined
)
{
changeData
.
forEach
(
element
=>
{
console
.
info
(
"
changed !
"
+
element
+
"
"
+
g_object
[
element
]);
...
...
@@ -126,7 +124,7 @@ off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<st
| callback | Callback
<
{
sessionId:
string
,
fields:
Array
&
lt
;
string
&
gt
;
}
>
| 否 | 需要删除的变更回调,若不设置则删除该对象所有的变更回调。 |
示例:
-
示例:
```
js
import
distributedObject
from
'
@ohos.data.distributedDataObject
'
var
g_object
=
distributedObject
.
createDistributedObject
({
name
:
"
Amy
"
,
age
:
18
,
isVis
:
false
,
...
...
@@ -134,7 +132,7 @@ off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<st
changeCallback
:
function
(
sessionId
,
changeData
)
{
console
.
info
(
"
change
"
+
sessionId
);
}
g_object
.
on
(
"
change
"
,
this
.
changeCallback
);
//删除变更回调changeCallback
g_object
.
off
(
"
change
"
,
changeCallback
);
...
...
@@ -152,9 +150,9 @@ on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, st
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 事件类型,固定为'status',表示对象上下线。 |
| callback | Callback
<
{
sessionId:
string
,
networkId:
string
,
status:
'
online
'
\
\
|
'
offline
'
}
>
| 是 | 监听上下线回调实例。 |
| callback | Callback
<
{
sessionId:
string
,
networkId:
string
,
status:
'
online
'
\|
'
offline
'
}
>
| 是 | 监听上下线回调实例。 |
示例:
-
示例:
```
js
import
distributedObject
from
'
@ohos.data.distributedDataObject
'
var
g_object
=
distributedObject
.
createDistributedObject
({
name
:
"
Amy
"
,
age
:
18
,
isVis
:
false
,
...
...
@@ -162,7 +160,7 @@ on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, st
statusCallback
:
function
(
sessionId
,
networkid
,
status
)
{
this
.
response
+=
"
status changed
"
+
sessionId
+
"
"
+
status
+
"
"
+
networkId
;
}
g_object
.
on
(
"
status
"
,
this
.
changeCallback
);
```
...
...
@@ -178,16 +176,16 @@ off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, s
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 事件类型,固定为'status',表示对象上下线。 |
| callback | Callback
<
{
sessionId:
string
,
networkId:
string
,
status:
'
online
'
\
\
|
'
offline
'
}
>
| 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。 |
| callback | Callback
<
{
sessionId:
string
,
networkId:
string
,
status:
'
online
'
\|
'
offline
'
}
>
| 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。 |
示例:
-
示例:
```
js
import
distributedObject
from
'
@ohos.data.distributedDataObject
'
statusCallback
:
function
(
sessionId
,
networkId
,
status
)
{
this
.
response
+=
"
status changed
"
+
sessionId
+
"
"
+
status
+
"
"
+
networkId
;
}
g_object
.
on
(
"
status
"
,
this
.
changeCallback
);
//删除上下线回调changeCallback
g_object
.
off
(
"
status
"
,
changeCallback
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录