Skip to content

Commit 9f26534

Browse files
committed
Update.
1 parent 53a706c commit 9f26534

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

db/badger.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -402,12 +402,12 @@ func (b *BadgerDB) FindAll(prefix string, result interface{}) error {
402402

403403
// 设置 DDNSProfilesRaw 字段
404404
if ddnsRaw, exists := serverData["DDNSProfilesRaw"]; exists {
405-
if ddnsStr, isStr := ddnsRaw.(string); isStr {
405+
if ddnsStr, isStr := ddnsRaw.(string); isStr && ddnsStr != "" {
406406
server.DDNSProfilesRaw = ddnsStr
407407
log.Printf("BadgerDB FindAll: 服务器 %d (%s) 加载 DDNSProfilesRaw: %s",
408408
server.ID, server.Name, ddnsStr)
409409
// 同时解析到 DDNSProfiles 字段
410-
if ddnsStr != "" && ddnsStr != "[]" {
410+
if ddnsStr != "[]" {
411411
if err := utils.Json.Unmarshal([]byte(ddnsStr), &server.DDNSProfiles); err != nil {
412412
log.Printf("解析服务器 %d 的DDNSProfiles失败: %v", server.ID, err)
413413
server.DDNSProfiles = []uint64{}
@@ -417,12 +417,19 @@ func (b *BadgerDB) FindAll(prefix string, result interface{}) error {
417417
}
418418
} else {
419419
server.DDNSProfiles = []uint64{}
420-
log.Printf("BadgerDB FindAll: 服务器 %d (%s) DDNSProfilesRaw 为空,设置为空数组",
421-
server.ID, server.Name)
422420
}
421+
} else {
422+
// 处理 nil 或空字符串的情况
423+
server.DDNSProfilesRaw = "[]"
424+
server.DDNSProfiles = []uint64{}
425+
log.Printf("BadgerDB FindAll: 服务器 %d (%s) DDNSProfilesRaw 为 nil/空,设置为空数组",
426+
server.ID, server.Name)
423427
}
424428
} else {
425-
log.Printf("BadgerDB FindAll: 服务器 %d (%s) 没有找到 DDNSProfilesRaw 字段",
429+
// 字段不存在,设置默认值
430+
server.DDNSProfilesRaw = "[]"
431+
server.DDNSProfiles = []uint64{}
432+
log.Printf("BadgerDB FindAll: 服务器 %d (%s) 没有找到 DDNSProfilesRaw 字段,设置默认值",
426433
server.ID, server.Name)
427434
}
428435
}

db/model_ops.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,20 @@ func (o *ServerOps) SaveServer(server *model.Server) error {
5151

5252
// 手动添加有 json:"-" 标签的重要字段
5353
serverData["Secret"] = server.Secret
54-
serverData["DDNSProfilesRaw"] = server.DDNSProfilesRaw
54+
55+
// 确保 DDNSProfilesRaw 不为 nil,如果为空则设置为空数组字符串
56+
if server.DDNSProfilesRaw == "" {
57+
serverData["DDNSProfilesRaw"] = "[]"
58+
} else {
59+
serverData["DDNSProfilesRaw"] = server.DDNSProfilesRaw
60+
}
61+
5562
serverData["LastStateJSON"] = server.LastStateJSON
5663
serverData["HostJSON"] = server.HostJSON
5764

5865
// 调试日志:记录保存的 DDNS 配置
5966
log.Printf("BadgerDB SaveServer: 服务器 %d (%s) 保存 DDNSProfilesRaw: %s",
60-
server.ID, server.Name, server.DDNSProfilesRaw)
67+
server.ID, server.Name, serverData["DDNSProfilesRaw"])
6168

6269
// 重新序列化包含所有字段的数据
6370
finalJSON, err := json.Marshal(serverData)

0 commit comments

Comments
 (0)