diff --git a/zh-cn/application-dev/reference/apis/js-apis-data-distributedobject.md b/zh-cn/application-dev/reference/apis/js-apis-data-distributedobject.md index 5917976c58a5840152786573c551932c20749eb8..79c474b00aa1c9e77c25a6ea710df58815c0069a 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-data-distributedobject.md +++ b/zh-cn/application-dev/reference/apis/js-apis-data-distributedobject.md @@ -13,35 +13,57 @@ import distributedObject from '@ohos.data.distributedDataObject'; ``` -## distributedDataObject.createDistributedObject - -createDistributedObject(source: object): DistributedObject +## distributedObject.create9+ +create(context: Context, source: object): DistributedObjectV9 创建一个分布式数据对象。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | + | context | Context | 是 | 应用的上下文。
FA模型的应用Context定义见[Context](js-apis-Context.md)。
Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 | | source | object | 是 | 设置分布式数据对象的属性。 | - + **返回值:** | 类型 | 说明 | | -------- | -------- | -| [DistributedObject](#distributedobject) | 创建完成的分布式数据对象。 | +| [DistributedObjectV9](#distributedobjectv9) | 创建完成的分布式数据对象。 | **示例:** +FA模型示例: + ```js +// 导入模块 import distributedObject from '@ohos.data.distributedDataObject'; -// 创建对象,对象包含4个属性类型,string,number,boolean和Object -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +// 创建对象,该对象包含4个属性类型,string,number,boolean和Object +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); ``` +Stage模型示例: + +```ts +// 导入模块 +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +// 创建对象,该对象包含4个属性类型,string,number,boolean和Object +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +``` ## distributedObject.genSessionId @@ -49,7 +71,7 @@ genSessionId(): string 随机创建一个sessionId。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **返回值:** @@ -61,14 +83,14 @@ genSessionId(): string ```js import distributedObject from '@ohos.data.distributedDataObject'; -var sessionId = distributedObject.genSessionId(); +let sessionId = distributedObject.genSessionId(); ``` ## SaveSuccessResponse9+ save接口回调信息。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject | 名称 | 类型 | 说明 | | -------- | -------- | -------- | @@ -80,25 +102,150 @@ save接口回调信息。 revokeSave接口回调信息。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject | 名称 | 类型 | 说明 | | -------- | -------- | -------- | | sessionId | string | 多设备协同的唯一标识。 | -## DistributedObject +## DistributedObjectV9 表示一个分布式数据对象。 -### setSessionId +### setSessionId9+ -setSessionId(sessionId?: string): boolean +setSessionId(sessionId: string, callback: AsyncCallback<void>): void 设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。 **需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | sessionId | string | 是 | 分布式数据对象在可信组网中的标识ID。| + | callback | AsyncCallback<void> | 是 | 加入session的异步回调。| + +**错误码:** + + 以下错误码的详细介绍参见[分布式数据对象错误码](../errorcodes/errorcode-distributed-data_object.md)。 + + | 类型 | 说明 | + | -------- | -------- | + | 15400001 | 创建内存数据库失败。| + +**示例:** + +FA模型示例 + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +// g_object加入分布式组网 +g_object.setSessionId(distributedObject.genSessionId(), ()=>{ + console.log("join session"); +}); +``` +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +// g_object加入分布式组网 +g_object.setSessionId(distributedObject.genSessionId(), ()=>{ + console.log("join session"); +}); +``` + +### setSessionId9+ + +setSessionId(callback: AsyncCallback<void>): void + +退出所有已加入的session。 + +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 + +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | callback | AsyncCallback<void> | 是 | 退出所有已加入session的异步回调。 | + +**错误码:** + + 以下错误码的详细介绍参见[分布式数据对象错误码](../errorcodes/errorcode-distributed-data_object.md)。 + + | 类型 | 说明 | + | -------- | -------- | + | 15400001 | 创建内存数据库失败。| + +**示例:** + +FA模型示例 + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +// g_object加入分布式组网 +g_object.setSessionId(distributedObject.genSessionId(), ()=>{ + console.log("join session"); +}); +// 退出分布式组网 +g_object.setSessionId(() => { + console.log("leave all lession."); +}); +``` +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +// g_object加入分布式组网 +g_object.setSessionId(distributedObject.genSessionId(), ()=>{ + console.log("join session"); +}); +// 退出分布式组网 +g_object.setSessionId(() => { + console.log("leave all lession."); +}); +``` + +### setSessionId9+ + +setSessionId(sessionId?: string): Promise<void> + +设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。 + +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 + +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** @@ -108,28 +255,75 @@ setSessionId(sessionId?: string): boolean **返回值:** +| 类型 | 说明 | +| -------- | -------- | +| Promise<void> | Promise对象。| + +**错误码:** + + 以下错误码的详细介绍参见[分布式数据对象错误码](../errorcodes/errorcode-distributed-data_object.md)。 + | 类型 | 说明 | | -------- | -------- | - | boolean | true:标识设置sessionId成功。
false:标识设置sessionId失败。 | + | 15400001 | 创建内存数据库失败。| **示例:** +FA模型示例 + ```js import distributedObject from '@ohos.data.distributedDataObject'; -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}});; +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); // g_object加入分布式组网 -g_object.setSessionId(distributedObject.genSessionId()); -// 设置为""退出分布式组网 -g_object.setSessionId(""); +g_object.setSessionId(distributedObject.genSessionId()).then (()=>{ + console.log("join session."); + }).catch((error)=>{ + console.info("error:" + error.code + error.message); +}); +// 退出分布式组网 +g_object.setSessionId().then (()=>{ + console.log("leave all lession."); + }).catch((error)=>{ + console.info("error:" + error.code + error.message); +}); +``` +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +// g_object加入分布式组网 +g_object.setSessionId(distributedObject.genSessionId()).then (()=>{ + console.info("join session."); + }).catch((error)=>{ + console.info("error:" + error.code + error.message); +}); +// 退出分布式组网 +g_object.setSessionId().then (()=>{ + console.log("leave all lession."); + }).catch((error)=>{ + console.info("error:" + error.code + error.message); +}); ``` -### on('change') +### on('change')9+ on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<string> }>): void -监听分布式数据对象的变更。 +监听分布式数据对象的数据变更。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** @@ -140,9 +334,14 @@ on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<stri **示例:** +FA模型示例 + ```js -import distributedObject from '@ohos.data.distributedDataObject'; -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +import distributedObject from '@ohos.data.distributedDataObject'; +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); globalThis.changeCallback = (sessionId, changeData) => { console.info("change" + sessionId); if (changeData != null && changeData != undefined) { @@ -154,13 +353,37 @@ globalThis.changeCallback = (sessionId, changeData) => { g_object.on("change", globalThis.changeCallback); ``` -### off('change') +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +globalThis.changeCallback = (sessionId, changeData) => { + console.info("change" + sessionId); + if (changeData != null && changeData != undefined) { + changeData.forEach(element => { + console.info("changed !" + element + " " + g_object[element]); + }); + } +} +g_object.on("change", globalThis.changeCallback); +``` + +### off('change')9+ off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<string> }>): void 当不再进行数据变更监听时,使用此接口删除对象的变更监听。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** @@ -172,22 +395,46 @@ off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<st **示例:** +FA模型示例 + ```js -import distributedObject from '@ohos.data.distributedDataObject'; -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +import distributedObject from '@ohos.data.distributedDataObject'; +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); // 删除数据变更回调changeCallback g_object.off("change", globalThis.changeCallback); // 删除所有的数据变更回调 g_object.off("change"); ``` -### on('status') +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +// 删除数据变更回调changeCallback +g_object.off("change", globalThis.changeCallback); +// 删除所有的数据变更回调 +g_object.off("change"); +``` + +### on('status')9+ on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>): void 监听分布式数据对象的上下线。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** @@ -198,22 +445,46 @@ on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, st **示例:** +FA模型示例 + ```js import distributedObject from '@ohos.data.distributedDataObject'; +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +globalThis.statusCallback = (sessionId, networkId, status) => { + globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +g_object.on("status", globalThis.statusCallback); +``` + +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} globalThis.statusCallback = (sessionId, networkId, status) => { globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; } -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); g_object.on("status", globalThis.statusCallback); ``` -### off('status') +### off('status')9+ off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>): void 当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** @@ -225,9 +496,36 @@ off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, s **示例:** +FA模型示例 + ```js import distributedObject from '@ohos.data.distributedDataObject'; -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +globalThis.statusCallback = (sessionId, networkId, status) => { + globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; +} +// 删除上下线回调changeCallback +g_object.off("status",globalThis.statusCallback); +// 删除所有的上下线回调 +g_object.off("status"); +``` + +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); globalThis.statusCallback = (sessionId, networkId, status) => { globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; } @@ -251,7 +549,7 @@ save(deviceId: string, callback: AsyncCallback<SaveSuccessResponse>): void - 应用卸载。 - 成功恢复数据之后。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** @@ -264,7 +562,31 @@ save(deviceId: string, callback: AsyncCallback<SaveSuccessResponse>): void ```js import distributedObject from '@ohos.data.distributedDataObject'; -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false}); +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false}); +g_object.setSessionId("123456"); +g_object.save("local", (status, result) => { + console.log("save status = " + status); + console.log("save callback"); + console.info("save sessionId: " + result.sessionId); + console.info("save version: " + result.version); + console.info("save deviceId: " + result.deviceId); +}); +``` + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false}); g_object.setSessionId("123456"); g_object.save("local", (status, result) => { console.log("save status = " + status); @@ -289,7 +611,7 @@ save(deviceId: string): Promise<SaveSuccessResponse> - 应用卸载。 - 成功恢复数据之后。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** @@ -307,7 +629,32 @@ save(deviceId: string): Promise<SaveSuccessResponse> ```js import distributedObject from '@ohos.data.distributedDataObject'; -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false}); +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create({name:"Amy", age:18, isVis:false}); +g_object.setSessionId("123456"); +g_object.save("local").then((result) => { + console.log("save callback"); + console.info("save sessionId " + result.sessionId); + console.info("save version " + result.version); + console.info("save deviceId " + result.deviceId); +}, () => { + console.error("save failed"); +}); +``` + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create({name:"Amy", age:18, isVis:false}); g_object.setSessionId("123456"); g_object.save("local").then((result) => { console.log("save callback"); @@ -328,7 +675,7 @@ revokeSave(callback: AsyncCallback<RevokeSaveSuccessResponse>): void 如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。 如果对象保存在其他设备,那么将删除本地设备上的数据。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **参数:** @@ -338,9 +685,38 @@ revokeSave(callback: AsyncCallback<RevokeSaveSuccessResponse>): void **示例:** +FA模型示例 + ```js import distributedObject from '@ohos.data.distributedDataObject'; -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false}); +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false}); +g_object.setSessionId("123456"); +g_object.save("local").then((result) => { + console.log("save callback"); + console.info("save sessionId " + result.sessionId); + console.info("save version " + result.version); + console.info("save deviceId " + result.deviceId); +}, () => { + console.error("save failed"); +}); +``` + +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false}); g_object.setSessionId("123456"); g_object.revokeSave((result, data) => { console.log("revokeSave callback"); @@ -356,7 +732,7 @@ revokeSave(): Promise<RevokeSaveSuccessResponse> 如果对象保存在本地设备,那么将删除所有受信任设备上所保存的数据。 如果对象保存在其他设备,那么将删除本地设备上的数据。 -**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject。 +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject **返回值:** @@ -366,9 +742,14 @@ revokeSave(): Promise<RevokeSaveSuccessResponse> **示例:** +FA模型示例 + ```js import distributedObject from '@ohos.data.distributedDataObject'; -var g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false}); +import featureAbility from '@ohos.ability.featureAbility'; +// 获取context +let context = featureAbility.getContext(); +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false}); g_object.setSessionId("123456"); g_object.revokeSave().then((result) => { console.log("revokeSave callback"); @@ -377,3 +758,231 @@ g_object.revokeSave().then((result) => { console.error("revokeSave failed"); }); ``` + +Stage模型示例 + +```ts +import distributedObject from '@ohos.data.distributedDataObject'; +import Ability from '@ohos.application.Ability'; +// 获取context +let context; +class MainAbility extends Ability{ + onWindowStageCreate(windowStage){ + context = this.context + } +} +let g_object = distributedObject.create(context, {name:"Amy", age:18, isVis:false}); +g_object.setSessionId("123456"); +g_object.save("local").then((result) => { + console.log("save callback"); + console.info("save sessionId " + result.sessionId); + console.info("save version " + result.version); + console.info("save deviceId " + result.deviceId); +}, () => { + console.error("save failed"); +}); +``` + +## distributedObject.createDistributedObject(deprecated) + +createDistributedObject(source: object): DistributedObject + + +创建一个分布式数据对象。 + +> **说明:** +> +> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用distributedObject.create替代。 + +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | source | object | 是 | 设置分布式数据对象的属性。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| [DistributedObject](#distributedobjectdeprecated) | 创建完成的分布式数据对象。 | + +**示例:** + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +// 创建对象,对象包含4个属性类型,string,number,boolean和Object +let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +``` + +## DistributedObject(deprecated) + +表示一个分布式数据对象。 + +### setSessionId(deprecated) + +setSessionId(sessionId?: string): boolean + +设置同步的sessionId,当可信组网中有多个设备时,多个设备间的对象如果设置为同一个sessionId,就能自动同步。 + +> **说明:** +> +> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[setSessionId](#setsessionid9)替代。 + +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC。 + +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | sessionId | string | 否 | 分布式数据对象在可信组网中的标识ID。如果要退出分布式组网,设置为""或不设置均可。 | + +**返回值:** + + | 类型 | 说明 | + | -------- | -------- | + | boolean | true:标识设置sessionId成功。
false:标识设置sessionId失败。 | + +**示例:** + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +let 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')(deprecated) + +on(type: 'change', callback: Callback<{ sessionId: string, fields: Array<string> }>): void + +监听分布式数据对象的变更。 + +> **说明:** +> +> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[on('change')](#onchange9)替代。 + +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | type | string | 是 | 事件类型,固定为'change',表示数据变更。 | + | callback | Callback<{ sessionId: string, fields: Array<string> }> | 是 | 变更回调对象实例。
sessionId:标识变更对象的sessionId;
fields:标识对象变更的属性名。 | + +**示例:** + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +globalThis.changeCallback = (sessionId, changeData) => { + console.info("change" + sessionId); + if (changeData != null && changeData != undefined) { + changeData.forEach(element => { + console.info("changed !" + element + " " + g_object[element]); + }); + } +} +g_object.on("change", globalThis.changeCallback); +``` + +### off('change')(deprecated) + +off(type: 'change', callback?: Callback<{ sessionId: string, fields: Array<string> }>): void + +当不再进行数据变更监听时,使用此接口删除对象的变更监听。 + +> **说明:** +> +> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[off('change')](#offchange9)替代。 + +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | type | string | 是 | 事件类型,固定为'change',表示数据变更。 | + | callback | Callback<{ sessionId: string, fields: Array<string> }> | 否 | 需要删除的数据变更回调,若不设置则删除该对象所有的数据变更回调。
sessionId:标识变更对象的sessionId;
fields:标识对象变更的属性名。 | + + +**示例:** + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +// 删除数据变更回调changeCallback +g_object.off("change", globalThis.changeCallback); +// 删除所有的数据变更回调 +g_object.off("change"); +``` + +### on('status')(deprecated) + +on(type: 'status', callback: Callback<{ sessionId: string, networkId: string, status: 'online' | 'offline' }>): void + +监听分布式数据对象的上下线。 + +> **说明:** +> +> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[on('status')](#onstatus9)替代。 + +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | + | callback | Callback<{ sessionId: string, networkId: string, status: 'online' \| 'offline' }> | 是 | 监听上下线回调实例。
sessionId:标识变更对象的sessionId;
networkId:标识对象设备,即deviceId;
status:标识对象为'online'(上线)或'offline'(下线)的状态。 | + +**示例:** + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +globalThis.statusCallback = (sessionId, networkId, status) => { + globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; +} +let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +g_object.on("status", globalThis.statusCallback); +``` + +### off('status')(deprecated) + +off(type: 'status', callback?: Callback<{ sessionId: string, deviceId: string, status: 'online' | 'offline' }>): void + +当不再进行对象上下线监听时,使用此接口删除对象的上下线监听。 + +> **说明:** +> +> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用[off('status')](#offstatus9)替代。 + +**系统能力:** SystemCapability.DistributedDataManager.DataObject.DistributedObject + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | + | type | string | 是 | 事件类型,固定为'status',表示对象上下线。 | + | callback | Callback<{ sessionId: string, deviceId: string, status: 'online' \| 'offline' }> | 否 | 需要删除的上下线回调,若不设置则删除该对象所有的上下线回调。
sessionId:标识变更对象的sessionId;
deviceId:标识变更对象的deviceId;
status:标识对象为'online'(上线)或'offline'(下线)的状态。 | + + +**示例:** + +```js +import distributedObject from '@ohos.data.distributedDataObject'; +let g_object = distributedObject.createDistributedObject({name:"Amy", age:18, isVis:false, parent:{mother:"jack mom",father:"jack Dad"}}); +globalThis.statusCallback = (sessionId, networkId, status) => { + globalThis.response += "status changed " + sessionId + " " + status + " " + networkId; +} +// 删除上下线回调changeCallback +g_object.off("status",globalThis.statusCallback); +// 删除所有的上下线回调 +g_object.off("status"); +``` \ No newline at end of file diff --git a/zh-cn/application-dev/reference/errorcodes/errorcode-distributed-data_object.md b/zh-cn/application-dev/reference/errorcodes/errorcode-distributed-data_object.md new file mode 100644 index 0000000000000000000000000000000000000000..1a48200bf58c284f7ba46b257d00d98d3e506904 --- /dev/null +++ b/zh-cn/application-dev/reference/errorcodes/errorcode-distributed-data_object.md @@ -0,0 +1,19 @@ +# 分布式数据对象错误码 + +## 15400001 创建内存数据库失败 + +**错误信息** + +Create table failed. + +**错误描述** + +创建内存数据库失败。 + +**可能原因** + +已经存在加入相同session的对象。 + +**处理步骤** + +检查是否已经有加入相同session的对象。 \ No newline at end of file