# Neo4j 连接成功后返回数据库 ID ## 需求说明 当前端 Connect 测试 Neo4j 连接成功后,后端需要返回数据库的 ID,以便前端保存图谱配置。 --- ## 问题 当前 `/neo4j/check` 接口返回: ```json { "success": true, "message": "connection successful", "version": "5.14.0", "databases": ["neo4j", "system"] } ``` **没有返回 `databaseId`**,导致后续保存图谱时缺少 `databaseId`。 --- ## 需求内容 修改 `/neo4j/check` 接口,在连接成功时: 1. **检查数据库是否已存在** - 根据 URI(bolt://host:port)、username、database 查询 2. **如果存在** - 返回已有的 `databaseId` 3. **如果不存在** - 自动创建一条数据库记录,并返回新的 `databaseId` ### 返回格式 ```json { "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` 请求: ```json { "db_type": "Neo4j", "host": "10.10.10.189", "port": 7687, "username": "neo4j", "password": "neo4j", "database": "neo4j" } ``` 后端需要增加 `name` 字段用于数据库名称(可选): ```json { "name": "My Neo4j Database" } ``` --- ## 涉及文件 - `server/internal/service/neo4j_service.go` - 函数:`Check()` - 第 81-128 行 - 函数:`ensureNeo4jDatabase()` - 第 131-175 行(已有代码但可能有问题) - `server/internal/model/neo4j_info.go` - 结构体:`Neo4jCheckResponse` - 需要确保 `databaseId` 字段正确返回 --- ## 前端使用 前端代码已实现兼容处理: ```javascript const dbId = result.databaseId || result.id || result.database_id || '' ``` 所以后端返回 `databaseId`、`id` 或 `database_id` 都可以被正确识别。