Skip to content

端点

/api/block/batchUpdateBlock

批量更新块

需要认证

接口描述

此接口用于在一个原子事务中批量更新多个块的内容。

这对于需要同时修改多个块并确保它们要么全部成功、要么全部失败的场景非常有用。

API 会将所有指定的更新操作打包成一个事务执行,执行后会强制刷新数据库队列,并通过 WebSocket 广播变更。

注意: 更新文档块(`NodeDocument`)时,此 API 会先删除文档内所有现有块,然后将新内容追加进去,行为与更新普通块不同。

实现链接

请求参数

参数名类型是否必须描述
blocksarray包含多个块更新信息的对象数组。
blocks[].idstring要更新的块的 ID。
blocks[].datastring块的新内容。
blocks[].dataTypestring`data` 的格式,必须是 `"markdown"` 或 `"dom"`。

返回值

参数名类型描述
codenumber返回码,0 表示成功。
msgstring错误信息,成功时为空字符串。
dataarray包含执行的操作事务信息的数组(通常只包含一个事务)。
data[].doOperationsarray执行的操作数组。
data[].doOperations[].actionstring操作类型,例如 "update"。
data[].doOperations[].idstring被更新的块的 ID。
data[].doOperations[].datastring处理后的 DOM 内容。
data[].undoOperationsarray对应的撤销操作数组。
data[].timestampnumber事务的时间戳 (毫秒)。

请求示例

返回示例

请求示例

json
{
  "blocks": [
    {
      "id": "20230315180000-abcdefg",
      "data": "这是块 1 的新 Markdown 内容",
      "dataType": "markdown"
    },
    {
      "id": "20230315180100-hijklmn",
      "data": "<div data-type=\"NodeParagraph\" class=\"p\"><div contenteditable=\"true\">这是块 2 的新 DOM 内容</div></div>",
      "dataType": "dom"
    }
  ]
}

返回示例 (成功)

json
{
  "code": 0,
  "msg": "",
  "data": [
    {
      "doOperations": [
        {
          "action": "update",
          "id": "20230315180000-abcdefg",
          "data": "<div data-node-id=\"20230315180000-abcdefg\" ...>...</div>"
        },
        {
          "action": "update",
          "id": "20230315180100-hijklmn",
          "data": "<div data-node-id=\"20230315180100-hijklmn\" ...>...</div>"
        }
      ],
      "undoOperations": [
        // ... 对应的撤销操作
      ],
      "timestamp": 1678886400000
    }
  ]
}

返回示例 (失败)

json
{
  "code": -1,
  "msg": "parse tree failed",
  "data": null
}