g.GET("/", func(c echo.Context) error {
var users []models.User
err := db.Find(users).Error
if err != nil {
fmt.Println(err)
}
return c.JSON(http.StatusOK, users)
})
Run Code Online (Sandbox Code Playgroud)
这是使用切片从表中获取和显示用户的代码,导致gorm出现以下错误
reflect.Value.Set使用无法寻址的值
小智 17
您必须使用指向切片的指针调用Find.
err := db.Find(&users).Error
Run Code Online (Sandbox Code Playgroud)
相关的Gorm文档:http://jinzhu.me/gorm/crud.html#query
只是为了澄清S.Diego的答案,更改了以下内容:
err := db.Find(users).Error
Run Code Online (Sandbox Code Playgroud)
对此:
err := db.Find(&users).Error
Run Code Online (Sandbox Code Playgroud)
错误提示,变量用户不可寻址,因为它不是指针。
以与接受的答案非常相似的方式(但在略有不同的上下文中),以及我在不同项目中不断犯的错误:
func migrate(db *gorm.DB) {
db.AutoMigrate(User{}, Activity{})
}
Run Code Online (Sandbox Code Playgroud)
变成
func migrate(db *gorm.DB) {
db.AutoMigrate(&User{}, &Activity{})
}
Run Code Online (Sandbox Code Playgroud)
注意符号。