Files
X-Agents/teams/web/neo4j-check-return-id.md
2026-03-11 14:26:47 +08:00

2.2 KiB
Raw Blame History

Neo4j 连接成功后返回数据库 ID

需求说明

当前端 Connect 测试 Neo4j 连接成功后,后端需要返回数据库的 ID以便前端保存图谱配置。


问题

当前 /neo4j/check 接口返回:

{
  "success": true,
  "message": "connection successful",
  "version": "5.14.0",
  "databases": ["neo4j", "system"]
}

没有返回 databaseId,导致后续保存图谱时缺少 databaseId


需求内容

修改 /neo4j/check 接口,在连接成功时:

  1. 检查数据库是否已存在 - 根据 URIbolt://host:port、username、database 查询
  2. 如果存在 - 返回已有的 databaseId
  3. 如果不存在 - 自动创建一条数据库记录,并返回新的 databaseId

返回格式

{
  "success": true,
  "message": "connection successful",
  "version": "5.14.0",
  "databases": ["neo4j", "system"],
  "databaseId": "xxx-xxx-xxx",
  "name": "Neo4j-neo4j",
  "description": "Neo4j neo4j@10.10.10.189:7687"
}
字段 类型 说明
success bool 是否成功
message string 消息
version string Neo4j 版本
databases array 数据库列表
databaseId string 数据库记录 ID
name string 数据库名称
description string 数据库描述

请求参数

当前 /neo4j/check 请求:

{
  "db_type": "Neo4j",
  "host": "10.10.10.189",
  "port": 7687,
  "username": "neo4j",
  "password": "neo4j",
  "database": "neo4j"
}

后端需要增加 name 字段用于数据库名称(可选):

{
  "name": "My Neo4j Database"
}

涉及文件

  • server/internal/service/neo4j_service.go

    • 函数:Check() - 第 81-128 行
    • 函数:ensureNeo4jDatabase() - 第 131-175 行(已有代码但可能有问题)
  • server/internal/model/neo4j_info.go

    • 结构体:Neo4jCheckResponse - 需要确保 databaseId 字段正确返回

前端使用

前端代码已实现兼容处理:

const dbId = result.databaseId || result.id || result.database_id || ''

所以后端返回 databaseIdiddatabase_id 都可以被正确识别。