[英]{FIXED} Golang RESTAPI returns wrong data
當我使用調試器時, metricId
返回具有所有0 or null
值的度量對象(與輸出相同)。
我在這里做錯了什么?
The Database connection works.
func GetMetricById(c *gin.Context) {
metricId := c.Param("id")
conn := config.DatabaseConnect()
var obj models.Metric
rows := conn.QueryRow("SELECT * FROM Metric WHERE id = ?", metricId)
err := rows.Scan(&obj.Id, &obj.Sms, &obj.Absence, &obj.Pregnant, &obj.Uwv_notifications, &obj.Wia_dossiers_started, &obj.Employees, &obj.Data_id, &obj.Date, &obj.Type)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(obj, "Metric Object that is called.")
c.JSON(http.StatusOK, obj)
}
輸出:
{
"Id": 0,
"Sms": 0,
"Absence": 0,
"Pregnant": 0,
"Uwv_notifications": 0,
"Wia_dossiers_started": 0,
"Employees": 0,
"Data_id": 0,
"Date": "",
"Type": 0
}
我認為解決方案可能是使用metricId := c.Params.ByName("id")
而不是metricId := c.Param("id")
[回答]
func GetMetricsByDataId(c *gin.Context) {
queryParams := c.Request.URL.Query()
conn := config.DatabaseConnect()
var metrObject []models.Metric
rows, _ := conn.Query("SELECT * FROM Metric WHERE data_id = ?", queryParams.Get("data_id"))
defer rows.Next()
for rows.Next() {
var obj models.Metric
if err := rows.Scan(&obj.Id, &obj.Sms, &obj.Absence, &obj.Pregnant, &obj.Uwv_notifications, &obj.Wia_dossiers_started, &obj.Employees, &obj.Data_id, &obj.Date, &obj.Type); err != nil {
_ = fmt.Errorf(err.Error())
}
metrObject = append(metrObject, obj)
}
if err := rows.Err(); err != nil {
_ = fmt.Errorf(err.Error())
}
c.JSON(http.StatusOK, metrObject)
}
像這樣有效
localhost:8082/billing/getmetricbydataid?data_id=150295
通過此 API 調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.