@@ -252,6 +252,33 @@ func (b *BadgerDB) FindAll(prefix string, result interface{}) error {
252252
253253 log .Printf ("FindAll (server case): 已处理 %d 条服务器记录. Final JSON to unmarshal to result: %s" , len (servers ), string (serversJSON ))
254254 return json .Unmarshal (serversJSON , result )
255+ case "monitor" :
256+ // 监控器记录也需要特殊处理布尔字段
257+ var monitors []* map [string ]interface {}
258+ for i , item := range items {
259+ log .Printf ("FindAll (monitor case): Processing item %d, raw data: %s" , i , string (item ))
260+ var data map [string ]interface {}
261+ if err := json .Unmarshal (item , & data ); err != nil {
262+ log .Printf ("FindAll (monitor case): Item %d, 解析监控器数据失败: %v, 数据: %s" , i , err , string (item ))
263+ continue
264+ }
265+ log .Printf ("FindAll (monitor case): Item %d, successfully unmarshalled to map: %v" , i , data )
266+
267+ // 转换字段类型,确保布尔字段正确
268+ convertDbFieldTypes (& data )
269+ log .Printf ("FindAll (monitor case): Item %d, after convertDbFieldTypes: %v" , i , data )
270+ monitors = append (monitors , & data )
271+ }
272+
273+ // 重新序列化为 JSON
274+ monitorsJSON , err := json .Marshal (monitors )
275+ if err != nil {
276+ log .Printf ("FindAll (monitor case): 重新序列化监控器数据失败: %v. Processed monitors data: %v" , err , monitors )
277+ return err
278+ }
279+
280+ log .Printf ("FindAll (monitor case): 已处理 %d 条监控器记录. Final JSON to unmarshal to result: %s" , len (monitors ), string (monitorsJSON ))
281+ return json .Unmarshal (monitorsJSON , result )
255282 default :
256283 // 其他类型的记录,使用标准处理方式
257284 itemsJSON := "["
@@ -287,8 +314,16 @@ func convertDbFieldTypes(data *map[string]interface{}) {
287314 }
288315 }
289316
290- // 处理布尔型字段
291- boolFields := []string {"is_online" , "is_disabled" , "hide_for_guest" , "show_all" , "tasker" }
317+ // 处理布尔型字段 (支持多种命名格式)
318+ boolFields := []string {
319+ // Server fields
320+ "is_online" , "is_disabled" , "hide_for_guest" , "show_all" , "tasker" ,
321+ "HideForGuest" , "EnableDDNS" , "enable_ddns" ,
322+ // Monitor fields
323+ "notify" , "Notify" , "enable_trigger_task" , "EnableTriggerTask" ,
324+ "enable_show_in_service" , "EnableShowInService" ,
325+ "latency_notify" , "LatencyNotify" ,
326+ }
292327 for _ , field := range boolFields {
293328 if val , ok := d [field ]; ok {
294329 switch v := val .(type ) {
@@ -316,10 +351,7 @@ func convertDbFieldTypes(data *map[string]interface{}) {
316351 }
317352 }
318353
319- // 确保必要的字段存在
320- if _ , ok := d ["id" ]; ! ok {
321- d ["id" ] = float64 (0 )
322- }
354+ // 确保必要的字段存在,但不要覆盖已存在的id字段
323355 if _ , ok := d ["host_json" ]; ! ok {
324356 d ["host_json" ] = ""
325357 }
0 commit comments