MySQL(8.0.22)のデータベースから全件取得するクエリを実行し、jsonを返そうとしています。
以下のように書いてみたのですが、listsの中身が空になって返ってきてしまいます。
何が足りていないのでしょうか。
コード
main.go
(パッケージは省略しています)
db := dbworks.DBConnect() r := gin.Default() r.GET("", func(c *gin.Context) { lists := dbworks.GetAll(db) c.JSON(http.StatusOK, gin.H{ "lists": lists, }) }) r.Run()
dbworks.go
(パッケージとDB〜の定数の定義は省略しています)
type ToDoList struct { ID int `gorm:"column:id"` UserID int `gorm:"column:user_id"` Content string `gorm:"column:content"` CreatedAt time.Time `gorm:"column:created_at"` UpdatedAt time.Time `gorm:"column:updated_at"` } func DBConnect() *gorm.DB { connect := fmt.Sprintf( "%s:%s@%s/%s?charset=%s&parseTime=%s&loc=%s", DBuser, DBpass, DBProtocol, DBname, DBchar, DBparseTime, DBloc, ) sqlDB, err := sql.Open(DB, connect) if err != nil { panic(err.Error()) } gormDB, err := gorm.Open(mysql.New(mysql.Config{ Conn: sqlDB, }), &gorm.Config{}) if err != nil { panic(err.Error()) } return gormDB } func GetAll(db *gorm.DB) []ToDoList { var todo []ToDoList db.Find(&todo) return todo }
レスポンス
{ "lists": [] }
MySQLは起動しているようです。
また、コマンドラインでMySQLの目的のテーブルにデータが入っていることも確認済みです。
欲しいレスポンス
{ "lists":[ { "id": 1 "user_id": 1 "content": "aaa" "created_at": "2020-11-07 11:30:24" "updated_at": "2020-11-07 11:30:24" } ] }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。