【问题标题】:Golang - retrieve multiple results from MySQL, then display them as JSONGolang - 从 MySQL 检索多个结果,然后将它们显示为 JSON
【发布时间】:2020-04-29 02:40:14
【问题描述】:

最近,我正在学习 Go (Golang)。我正在尝试使用 Martini 和 jwt-go 制作一个简单的 Web 服务。在检索单行数据并将 JSON 作为响应放入时,我没有发现任何困难。但是,在处理多行时,情况就完全不同了。基本上,我指的是接受的答案here.

这是我的一段代码:

m.Get("/users", func(params martini.Params, r render.Render) {
    db, err := sql.Open("mysql", "root:@/sirat_v2")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    rows, err := db.Query("SELECT user_id, nama FROM `users` WHERE password = ?", "asdfasdf")
    defer rows.Close()

    cols, err := rows.Columns()
    if err != nil {
        panic(err.Error())
    }

    partages := make([]*Partage, 0, 10)
    var user_id int
    var nama string
    for rows.Next() {
        err = rows.Scan(&user_id, &nama)
        if err != nil { /* error handling */
        }
        partages = append(partages, &Partage{user_id, nama})
    }
})

在尝试构建时,出现错误说 Partage 未定义。

【问题讨论】:

  • 那么,Partage 的类型在哪里定义?
  • 如何定义Partage的类型?

标签: mysql go jwt-go


【解决方案1】:

出现错误是因为您使用 struct Partage 创建一个对象,但您没有声明它。

type Partage struct {
    user_id string
    nama string
}

但是如何将结果显示为 JSON 响应?我试过 r.JSON(200, partages) 但没有显示结果

ma​​rtini 中,您可以使用 r.JSON()rows 打印为 JSON

m.Get("/users", func(params martini.Params, r render.Render) {
    // ... 

    r.JSON(200, map[string]interface{}{
        data: rows
    })
})

【讨论】:

  • 感谢 Mas Noval 的回答(我也来自印度尼西亚)。但是如何将结果显示为 JSON 响应?我试过 r.JSON(200, partages) 但没有显示结果。
  • 实施得很好。非常感谢。你拯救了我的一天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多