fix: 修复云端变量记录data为null的问题
- 后端: handleAddRecord增加recordData nil检查,避免存入null
- 后端: 记录读取改用interface{}替代map[string]interface{}解析JSON
- 后端: JSON解析失败时回退返回原始字符串
- 后端: API返回raw_data字段暴露数据库原始数据用于诊断
- 后端: app/cloud.go同步修复同样的JSON解析问题
- 前端: parseRecordData增加raw_data回退解析
- 前端: 添加数据诊断卡片显示原始数据结构
This commit is contained in:
@@ -818,11 +818,16 @@ func handleAppGetVariableRecords(c *gin.Context) {
|
||||
|
||||
result := make([]gin.H, len(records))
|
||||
for i, r := range records {
|
||||
var data map[string]interface{}
|
||||
json.Unmarshal([]byte(r.Data), &data)
|
||||
var parsedData interface{}
|
||||
if r.Data != "" {
|
||||
json.Unmarshal([]byte(r.Data), &parsedData)
|
||||
}
|
||||
if parsedData == nil && r.Data != "" {
|
||||
parsedData = r.Data
|
||||
}
|
||||
result[i] = gin.H{
|
||||
"id": r.ID,
|
||||
"data": data,
|
||||
"data": parsedData,
|
||||
"created_at": r.CreatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -592,6 +592,9 @@ func handleAddRecord(appID uint, userID *uint, actionMap map[string]interface{})
|
||||
if !ok {
|
||||
return fmt.Errorf("缺少record_data参数")
|
||||
}
|
||||
if recordData == nil {
|
||||
return fmt.Errorf("record_data不能为空")
|
||||
}
|
||||
|
||||
var variable model.CloudVariable
|
||||
if err := database.DB.Where("app_id = ? AND key = ?", appID, variableKey).First(&variable).Error; err != nil {
|
||||
@@ -684,13 +687,17 @@ func getRecords(appID uint, userID *uint, variableKey string, page, pageSize int
|
||||
var recordList []interface{}
|
||||
for _, record := range records {
|
||||
var data interface{}
|
||||
if err := json.Unmarshal([]byte(record.Data), &data); err == nil {
|
||||
recordList = append(recordList, map[string]interface{}{
|
||||
"id": record.ID,
|
||||
"data": data,
|
||||
"created_at": record.CreatedAt,
|
||||
})
|
||||
if record.Data != "" {
|
||||
json.Unmarshal([]byte(record.Data), &data)
|
||||
}
|
||||
if data == nil && record.Data != "" {
|
||||
data = record.Data
|
||||
}
|
||||
recordList = append(recordList, map[string]interface{}{
|
||||
"id": record.ID,
|
||||
"data": data,
|
||||
"created_at": record.CreatedAt,
|
||||
})
|
||||
}
|
||||
|
||||
result["success"] = true
|
||||
|
||||
Reference in New Issue
Block a user