为了账号安全,请及时绑定邮箱和手机立即绑定

GORM GIN 更新查询导致 500 内部服务器错误

GORM GIN 更新查询导致 500 内部服务器错误

Go
宝慕林4294392 2022-12-13 10:44:00
我正在使用 Gin 和 GORM 在 Golang 中构建 Book API。我已成功实施 API 的创建、获取和删除部分,但更新导致 500 内部服务器错误。我正在尝试更新功能,它只更新正文中提供的特定标签(下面给出的示例)。非常感谢任何帮助或指导。去模型func UpdateBook(c *gin.Context) {    // Get model if exist    var book models.Book    if err := models.DB.Where("id = ?", c.Param("id")).First(&book).Error; err != nil {        c.JSON(http.StatusBadRequest, gin.H{"error": "Record not found!"})        return    }    // Validate input    var input UpdateBookInput    if err := c.ShouldBindJSON(&input); err != nil {        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})        return    }    models.DB.Model(&book).Updates(input)    c.JSON(http.StatusOK, gin.H{"data": book})}UpdateBookInput 结构type UpdateBookInput struct {    Title  string `json:"title"`    Author string `json:"author"`}主程序func main() {    router := gin.Default()    models.ConnectDatabase()    router.GET("/books", controllers.FetchBooks)    router.GET("/books/:id", controllers.FindBookByID)    router.GET("/books/title/:title", controllers.FindBookByTitle)    router.GET("/books/author/:author", controllers.FindBookByAuthor)    router.POST("/books", controllers.CreateBook)    router.PATCH("/books/:id", controllers.UpdateBook)    router.DELETE("/books/:id", controllers.RemoveBook)    router.Run()}请求 URL 和正文 URLPATCH http://127.0.0.1:8080/books/2身体{    "title": "Breaking Dawn",}方案/型号package modelstype Book struct {    ID     uint   `json:"id" gorm:"primary_key"`    Title  string `json:"title"`    Author string `json:"author"`}
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我想 JSON 数据包含一个字符串类型的 ID 字段,因为这里唯一的 uint 字段是 ID。要么 gorm 对更新或类似的东西表现得很奇怪。

确保输入是干净的。


查看完整回答
反对 回复 2022-12-13
?
绝地无双

TA贡献1946条经验 获得超4个赞

不要直接传递 UpdateBookInput 对象,而是将其转换为models.Book对象。



查看完整回答
反对 回复 2022-12-13
  • 2 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号