mariadb Golang RESTAPI返回错误数据

4jb9z9bj  于 2023-03-02  发布在  Go
关注(0)|答案(2)|浏览(118)

当我使用调试器时,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
}
ubof19bj

ubof19bj1#

我认为解决方案可能是使用metricId := c.Params.ByName("id")而不是metricId := c.Param("id")

23c0lvtd

23c0lvtd2#

[回答]

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调用

相关问题