接口路径: /api/data_metric/delete
请求方法: POST
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Integer | 是 | 指标节点ID |
请求示例:
{
"id": 1378
}
响应格式:
成功响应:
{
"code": 200,
"msg": "删除成功",
"data": {
"id": 1378,
"message": "成功删除数据指标节点 (ID: 1378)"
}
}
失败响应(节点不存在):
{
"code": 500,
"msg": "数据指标节点不存在 (ID: 1378)",
"data": {
"id": 1378,
"message": "数据指标节点不存在 (ID: 1378)"
}
}
失败响应(参数错误):
{
"code": 500,
"msg": {
"error": "指标ID不能为空"
},
"data": {}
}
位置: app/core/data_metric/metric_interface.py
函数签名:
def metric_delete(metric_node_id: int) -> dict:
"""
删除数据指标节点及其所有关联关系
Args:
metric_node_id: 指标节点ID
Returns:
dict: 删除结果,包含 success 状态和 message 信息
"""
功能说明:
DETACH DELETE 删除节点及其所有关联关系返回值结构:
{
"success": True/False, # 删除是否成功
"message": "状态信息" # 详细的状态描述
}
检查节点存在:
MATCH (n:DataMetric)
WHERE id(n) = $nodeId
RETURN n
删除节点和关系:
MATCH (n:DataMetric)
WHERE id(n) = $nodeId
DETACH DELETE n
RETURN count(n) as deleted_count
DETACH DELETE 是 Neo4j 的关键字,功能包括:
这意味着不需要手动遍历和删除关系,一条语句即可完成。
根据 DataMetric 节点的关系模型,删除时会自动清理以下关系:
| 关系类型 | 方向 | 目标节点 | 说明 |
|---|---|---|---|
| origin | 传出 | DataModel / DataMetric | 指标来源 |
| connection | 传出 | DataMeta | 元数据连接 |
| LABEL | 传出 | DataLabel | 数据标签 |
| child | 传出/传入 | DataMetric | 父子关系 |
数据库连接失败
{"success": False, "message": "无法连接到数据库"}节点不存在
{"success": False, "message": "数据指标节点不存在 (ID: xxx)"}参数错误
{"error": "指标ID不能为空"}{"error": "指标ID必须为整数"}删除异常
{"success": False, "message": "删除失败: [错误详情]"}import requests
import json
url = "http://localhost:5500/api/data_metric/delete"
headers = {"Content-Type": "application/json"}
data = {"id": 1378}
response = requests.post(url, headers=headers, json=data)
result = response.json()
if result["code"] == 200:
print(f"删除成功: {result['data']['message']}")
else:
print(f"删除失败: {result['msg']}")
curl -X POST http://localhost:5500/api/data_metric/delete \
-H "Content-Type: application/json" \
-d '{"id": 1378}'
fetch('http://localhost:5500/api/data_metric/delete', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ id: 1378 })
})
.then(response => response.json())
.then(data => {
if (data.code === 200) {
console.log('删除成功:', data.data.message);
} else {
console.log('删除失败:', data.msg);
}
})
.catch(error => console.error('请求错误:', error));
删除操作会在以下情况记录日志:
| 日志级别 | 场景 | 日志内容 |
|---|---|---|
| ERROR | 数据库连接失败 | "无法连接到数据库" |
| WARNING | 节点不存在 | "数据指标节点不存在: ID={id}" |
| INFO | 删除成功 | "成功删除数据指标节点: ID={id}" |
| WARNING | 删除失败 | "删除失败,节点可能已被删除: ID={id}" |
| ERROR | 异常错误 | "删除数据指标节点失败: {错误详情}" |
⚠️ 重要提示:
| 版本 | 日期 | 变更说明 |
|---|---|---|
| 1.0 | 2025-11-03 | 初始版本,实现基本删除功能 |
POST /api/data_metric/add - 新增数据指标POST /api/data_metric/update - 更新数据指标POST /api/data_metric/detail - 查询指标详情POST /api/data_metric/list - 指标列表查询