Golang 布尔值未在 PATCH 上检测到

2024年 2月 12日 33.3k 0

golang 布尔值未在 patch 上检测到

在Golang编程中,布尔值未在PATCH上检测到的问题是一个常见的错误。这个错误可能导致程序无法正常运行或产生意外的结果。php小编百草在本文中将介绍这个问题的原因和解决方法,帮助读者快速解决这个烦恼。无论您是初学者还是有经验的开发者,本文都将为您提供有用的指导和建议,让您的Golang代码更加健壮和可靠。

问题内容

我正在尝试指示客户端是否处于活动状态的应用程序。
如果我手动将 clientactive 布尔值设置为 false,我可以成功将其转换为 true。但如果为 true,则不会设置为 false。
我正在使用 gofiber 和 gorm

模型/client.go

type client struct {
gorm.model
slug string `json:"slug" gorm:"unique"`
clientname string `json:"client_name"`
address string `json:"address,omitempty"`
address2 string `json:"address_2,omitempty" gorm:"null"`
phone string `json:"phone" gorm:"null"`
primaryemail string `json:"primary_email" gorm:"null"`
secondaryemail string `json:"secondary_email" gorm:"null"`
clientactive bool `json:"client_active" gorm:"default:true"`
contacts []contact
devices []device
}

登录后复制

处理程序/clienthandler.go

func ClientUpdate(c *fiber.Ctx) error {
slug := c.Params("slug")

var data models.Client

err := c.BodyParser(&data)
if err != nil {
return err
}

// todo: the ClientActive variable will set as true, but never false
client := &models.Client{
ClientName: data.ClientName,
Address: data.Address,
Address2: data.Address2,
Phone: data.Phone,
PrimaryEmail: data.PrimaryEmail,
SecondaryEmail: data.SecondaryEmail,
ClientActive: data.ClientActive,
}

err = database.DB.Model(&data).Where("slug = ?", slug).Updates(&client).Error
if err != nil {
return err
}

return c.JSON(client)

}

登录后复制

所有其他行更新都没有问题。唯一的问题是 clientactive 布尔值。

完整代码可在 https://github.com/simpleittools/assetapi 获取

我已确认数据是以布尔值形式发送的。我在数据库输入之前和之后都运行了 fmt.prtintln(client),它确实正确显示为 false。

我在此过程中没有收到任何错误。

解决方法

gorm 默认值文档说:

对于定义默认值的字段,任何零值(例如 0、''、false)都不会保存到数据库中,您可能需要使用指针类型或 scanner/valuer 来避免这种情况

通过将字段类型更改为 *bool 进行修复:

type Client struct {

ClientActive *bool `json:"client_active" gorm:"default:true"`

}

登录后复制

以上就是Golang 布尔值未在 PATCH 上检测到的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论