跳到主要内容

数据与操作

本节详细介绍 Blocklet Server 中用于数据管理和操作任务的变更操作,主要侧重于创建和管理备份,以及迁移数据结构。这些操作对于数据完整性、更新和灾难恢复至关重要。

有关备份和日志的查询,请参阅 数据与操作查询 文档。

backupBlocklet

为指定的 blocklet 启动备份过程。备份可以保存到本地磁盘或已配置的 DID Space。这是一个异步操作,会在后台启动一个备份作业。

参数

  • input RequestBackupBlockletInput (required) — backupBlocklet 变更操作的输入对象。
    • appDid string (required) — 要备份的 blocklet 的 DID。
    • to BackupTo (required) — 备份的目标位置。必须是 spacesdisk 之一。

返回

返回一个 GeneralResponse 对象,指示请求的状态。

  • backupBlocklet GeneralResponse — 变更操作的响应对象。
    • code StatusCode — 如果备份作业成功启动,则返回 ok

示例

备份 Blocklet 到磁盘

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function createBackup() {
  try {
    const response = await client.backupBlocklet({
      input: {
        appDid: 'z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G',
        to: 'disk',
      },
    });
    console.log('已启动备份:', response.code);
  } catch (error) {
    console.error('启动备份时出错:', error);
  }
}

createBackup();

响应示例

json
{
  "backupBlocklet": {
    "code": "ok"
  }
}

此示例展示了如何为特定 blocklet 启动备份过程,并将备份保存到本地磁盘。

abortBlockletBackup

中止特定 blocklet 正在进行的备份操作。这对于取消长时间运行的备份非常有用。

参数

  • input RequestAbortBlockletBackupInput (required) — abortBlockletBackup 变更操作的输入对象。
    • appPid string (required) — 要中止备份的 blocklet 的进程 ID(即 blocklet DID)。

返回

返回一个 GeneralResponse 对象,指示请求的状态。

  • abortBlockletBackup GeneralResponse — 变更操作的响应对象。
    • code StatusCode — 如果成功请求中止备份,则返回 ok

示例

中止备份

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function cancelBackup(blockletDid) {
  try {
    const response = await client.abortBlockletBackup({
      input: {
        appPid: blockletDid,
      },
    });
    console.log('已请求取消备份:', response.code);
  } catch (error) {
    console.error('中止备份时出错:', error);
  }
}

cancelBackup('z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G');

响应示例

json
{
  "abortBlockletBackup": {
    "code": "ok"
  }
}

此示例演示了如何取消给定 blocklet 正在运行的备份。

restoreBlocklet

从备份中恢复一个 blocklet。备份的来源可以是本地磁盘或 DID Space。如果已存在该 blocklet,此操作将覆盖现有数据。

参数

  • input RequestRestoreBlockletInput (required) — restoreBlocklet 变更操作的输入对象。
    • appDid string (required) — 要恢复的 blocklet 的 DID。
    • appPid string (required) — 正在恢复的 blocklet 的进程 ID(DID)。
    • from BackupTo (required) — 备份的来源。必须是 spacesdisk 之一。
    • endpoint string — 备份端点 URL。从 spaces 恢复时需要。
    • delegation string — 可选。用于访问备份的委托信息。
    • password Bytes — 可选。用于解密备份的密码,如果备份已加密。
    • wallet any — 可选。如果需要,用于身份验证的钱包对象。

返回

返回一个 GeneralResponse 对象,指示请求的状态。

  • restoreBlocklet GeneralResponse — 变更操作的响应对象。
    • code StatusCode — 如果恢复作业成功启动,则返回 ok

示例

从磁盘恢复

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function restoreFromBackup() {
  try {
    const response = await client.restoreBlocklet({
      input: {
        appDid: 'z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G',
        appPid: 'z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G',
        from: 'disk',
      },
    });
    console.log('已启动恢复:', response.code);
  } catch (error) {
    console.error('启动恢复时出错:', error);
  }
}

restoreFromBackup();

响应示例

json
{
  "restoreBlocklet": {
    "code": "ok"
  }
}

此示例展示了如何从本地磁盘备份中为 blocklet 启动恢复过程。

migrateApplicationToStructV2

将应用程序从旧的数据结构迁移到 V2 结构。这是一次性操作,通常是旧版 blocklet 为了支持组件化和增强的备份/恢复功能等新特性所必需的。

参数

  • input RequestMigrateApplicationToStructV2Input (required) — 迁移变更操作的输入对象。
    • did string (required) — 要迁移的应用程序的 DID。
    • appSk string (required) — 应用程序的密钥。

返回

返回一个 GeneralResponse 对象,指示请求的状态。

  • migrateApplicationToStructV2 GeneralResponse — 变更操作的响应对象。
    • code StatusCode — 如果迁移成功,则返回 ok

示例

迁移应用程序

javascript
import BlockletServerClient from '@blocklet/server-js';

const client = new BlockletServerClient();

async function migrateApp(appDid, appSecretKey) {
  try {
    const response = await client.migrateApplicationToStructV2({
      input: {
        did: appDid,
        appSk: appSecretKey,
      },
    });
    console.log('迁移成功:', response.code);
  } catch (error) {
    console.error('迁移应用程序时出错:', error);
  }
}

migrateApp('z8iZpA6x8CRsBAbg9s33i1WkGHxGTCYxP81G', 'your_app_secret_key');

响应示例

json
{
  "migrateApplicationToStructV2": {
    "code": "ok"
  }
}

此示例展示了如何为旧版应用程序触发数据结构迁移。