我正在尝试使用Gin和Gorm设置REST API。以下是我的:main.gopackage mainimport ( "app/config" "app/service" "github.com/gin-gonic/gin")func main() { r := gin.Default() // Connect to database config.ConnectDatabase() r.GET("/books", service.FindBooks) // Run the server r.Run()}在我的,我试图像这样连接到DBconfig/setup.gopackage configimport ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")var DB *gorm.DB// ConnectDatabase : Setup connection to databasefunc ConnectDatabase() { database, err := gorm.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test_db") database.SingularTable(true) if err != nil { panic("Failed to connect to database!") } DB = database}在我的中,我有以下逻辑:service/book.gopackage serviceimport ( "errors" "app/config" "app/model" "fmt" "net/http" "github.com/gin-gonic/gin")// FindBooks : Get all booksfunc FindBooks(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"data": FindAllBooks()})}// FindAllBooks : Fetch all book from DBfunc FindAllBooks() []model.Book { var book []model.Book config.DB.Find(&book) for i := 0; i < len(book); i++ { fmt.Println(book[i]) } return book}而我的定义如下:model/Book.gopackage modeltype Book struct { id int64 `json:"id" gorm:"primary_key"` label string `json:"label" gorm:"type:varchar(255)"`}当我使用 运行应用程序时,以下是我可以看到的日志:go run main.go[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode)[GIN-debug] GET /books --> feedconsumer/service.FindBooks (3 handlers)[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default[GIN-debug] Listening and serving HTTP on :8080{0 }[GIN] 2021/03/09 - 12:43:43 | 200 | 2.313864ms | ::1 | GET "/books"基本上,这意味着对象实际上没有被获取。我在这里错过了什么?{0 }
2 回答

守着一只汪
TA贡献1872条经验 获得超3个赞
GORM用于定义模型字段。链接到文档snake_case
因此,对于您的情况,它基本上是:
package model
type Book struct {
ID int64 `json:"id" gorm:"primary_key"`
Label string `json:"label" gorm:"type:varchar(255)"`
}

慕慕森
TA贡献1856条经验 获得超17个赞
我想你可以像 https://gorm.io/docs/logger.html 一样为GORM配置记录器,以便能够在这些日志中看到实际的数据库查询。乍一看,您正在以正确的方式完成所有事情,如 https://gorm.io/docs/query.html#Retrieving-all-objects 但我个人遇到了一些不可预测的GORM行为,这在文档中并不那么明显
- 2 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消