Golang 中的 MongoDB Omitempty 标志和字段更新
解决 Omitempty 问题
工作时带有在 Golang 结构中使用 omitempty 标志的可选表单字段,它是重要的是要考虑前端和后端如何处理表单提交。特别是,复选框带来了挑战,因为 omitempty 标志会忽略空值。
默认行为
首次保存表单时,适当的值将存储在 MongoDB 中由于 omitempty 标志而成功。但是,在后续表单更新中,任何未选中的复选框(具有空值)都不会映射到结构,因此不会保存。因此,即使数据库中的实际值应该为 false,该复选框在表单编辑时仍会保持视觉检查状态。
修改结构
要解决此问题,简单的解决方案是将带有 omitempty 标志的字段类型从 bool 和 int 更改为相应类型的指针(*bool 和*int).
使用指针
指针允许三种不同的状态:
好处
此方法解决了问题,因为它允许用于区分的 API:
自定义编组和解组
或者,可以实现自定义编组和解组逻辑来处理具有omitempty 标志通过显式检查空值并相应地设置它们。然而,使用指针提供了一种更直接、更自动的解决方案。
结论
通过将带有 omitempty 标志的字段修改为指针,您可以有效地处理可选表单字段并确保复选框更新在前端和后端都正确反映。
以上是如何通过 Golang 表单更新正确处理 MongoDB 的 `omitempty` 标志?的详细内容。更多信息请关注PHP中文网其他相关文章!