-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
模块开发:标签管理 | Go 语言编程之旅 #3
Comments
db = db.Where("state = ?", t.State)
if err := db.Model(&t).Where("is_del = ?", 0).Count(&count).Error; err != nil {
return 0, err
} 这里 err的赋值写法看着好奇怪啊 |
@RanchoCooper 不奇怪,现实企业项目中很多开发者爱这么写。一般如果对变量 err 需要有其他处理,才会单独处理。 |
2.6.2 处理 model 回调部分 新版的gorm找不到 |
@RanchoCooper 由于本文,在拉取 gorm 时已经限定了 v1 的版本(当时 v2 还在 beta)。因此是不支持 gorm v2 的。等后续如果第四次印刷的话,才会考虑正式支持 gorm v2。 如果是按自己个人意愿拉取了 v2,那就自行适配就好了。适配好了可以把所属代码在评论区上留下言,让更多小伙伴学习,谢谢。 |
我跟着博客写到这里 发现创建的钩子函数未生效,而更新和删除的钩子函数生效了,请问下这有可能是什么原因
} |
这个错误有xd遇到过没
|
修改接口:zh,无参数,就出现(runtime error: invalid memory address or nil pointer dereference)这个情况;en,正常返回。。 |
@GarfieldZhan 有完整代码吗,也有可能是已经走进你的插件逻辑里了,但没有走到具体的实现逻辑里去。如果是没走的话,得 debug 看看,看看是什么地方写错了没有走进去? |
@fjjreal 能具体描述一下不...只言片语,没法直接定位到你的具体意思。 |
在调用修改标签的接口时,state传0,会报入参错误。传1,就没事,请问是啥原因 |
type UpdateTagRequest struct { 楼上的把参数验证,required去掉就行了。@xiaoshiniudao6 |
问个可能显得很傻的问题。 |
代码中的db变量会被改变吗?比如我第二次搜索,会不会在上次搜索的结果中搜索? |
调用修改接口state设置0不成功 实测ok |
在修改标签过程中
结果
但是在UpdateTagRequest里,我没有限制Name为requreid type UpdateTagRequest struct {
ID uint32 `form:"id" binding:"required,gte=1"`
Name string `form:"name" binding:"min=1,max=100"`
State uint8 `form:"state" binding:"oneof=0 1"`
ModifiedBy string `form:"modified_by" binding:"required,min=3,max=100"`
} 如果补上name参数,可以正常修改,例如输入命令
|
包版本, updateTag, type UpdatedTagRequest struct {
Id uint32 `form:"id" binding:"required,gte=1"`
Name string `form:"name" binding:"min=3,max=100"`
State *uint8 `form:"state" binding:"required,oneof=0 1"`
ModifiedBy string `form:"modified_by" binding:"required,min=3,max=100"`
} |
@Zrealshadow 那位老哥 我也是遇到name校验的同样问题 请问不加require为什么还是必须校验啊 |
$ curl -X POST http://127.0.0.1:8000/api/v1/tags -F 'name=Go' -F created_by=eddycjy |
@fjjreal 的问题我也遇到了,应该是个 bug locale := c.GetHeader("locale") 这一行如果 header 中没有 locale 就拿不到 translator,我改成 if locale == "" { 就不会报错了,总之要考虑拿不到 translator 的情况 |
@Zrealshadow,没写required但是写了min,所以,把min改为min=0就可以了 |
我也想问同样的这个问题,为什么要多个model |
我在这里给State指针赋值,有没有其他好方法 func (t Tag) Update(c *gin.Context) {
|
gorm v2版本没有gorm解决方案 func (m *Model) BeforeUpdate(tx *gorm.DB) error {
now := time.Now().Unix()
tx.Statement.SetColumn("modified_at", now)
return nil
} |
每次都要 svc := service.New(c.Request.Context()) 很烦啊 |
修改标签接口 |
@EricWangZ 我没有加把传参转换成int的步骤也成功了,不知道是不是gin的ShouldBind有把int智能的转换成int的功能? 求解 |
@YingYou 我只改了UpdateTagRequest成功了 没管请求参数,不知道是不是gin的ShouldBind有把int智能的转换成*int的功能? 求解 |
大家好 我在执行
这一操作后报错 |
@fjjreal 遇到了同样的问题 你有解决吗? |
有没有同学遇到这个参数校验的问题? runtime error: invalid memory address or nil pointer dereference |
我发现 curl -X POST http://127.0.0.1:8000/api/v1/tags -F 'name=Go' -F created_by=eddycjy2 请求会报 {"code":10000001,"msg":"入参错误"} |
上一个问题,是我的问题 |
为什么要用"created_on","modified_on", "deleted_on"这些字段?而不用“created_at", "updated_at", "deleted_at"?这样当数据变化时,gorm可以自动更新相关字段 |
为什么感觉用go开发个项目这么复杂呢, 是因为教程里没有用到现有的包进行简化吗? |
service/tag.go |
模块开发:标签管理 | Go 语言编程之旅
2.6 模块开发:标签管理 在初步完成了业务接口的入参校验的逻辑处理后,接下来我们正式的进入业务模块的业务逻辑开发,在本章节将完成标签模块的接口代码编写,涉及的接口如下:
功能 HTTP 方法 路径 新增标签 POST /tags 删除指定标签 DELETE /tags/:id 更新指定标签 PUT /tags/:id 获取标签列表 GET /tags 2.6.1 新建 model 方法 首先我们
https://golang2.eddycjy.com/posts/ch2/06-api-tag-module/
The text was updated successfully, but these errors were encountered: