100 lines
2.2 KiB
Markdown
100 lines
2.2 KiB
Markdown
|
|
# 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` 都可以被正确识别。
|
|||
|
|
|