我有一个简单的查询,可以检索给定时间范围内的测量值:
query := fmt.Sprintf(`from(bucket: "mybucket")
|> range(start: time(v: %d), stop: time(v: %d))
|> filter(fn: (r) => r["_measurement"] == "Xnode")
|> filter(fn: (r) => r["serial"] == "%s")
|> filter(fn: (r) => r["_field"] == "value")
|> mean()
`, start, end, serial)
results, err := db.Api.Query(context.Background(), query)
values := results.Record().Values()
return core.ShiftResults{
Begin: start,
End: shiftend,
Gasname: values["name"].(string),
Value: values["_value"].(float64)}, nil
但是,当查询不存在的序列号时,程序会panic:
panic({0x6cd740?, 0x96ff70?})
/usr/local/go/src/runtime/panic.go:920 +0x270
github.com/influxdata/influxdb-client-go/v2/api/query.(*FluxRecord).Values(0xc00007a190?)
/go/pkg/mod/github.com/influxdata/influxdb-client-go/[email protected]/api/query/table.go:199
它适用于现有设备和现有数据。 如何检查空结果以避免恐慌?