簡體   English   中英

{FIXED} Golang RESTAPI 返回錯誤數據

[英]{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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM