我用这个框架 Gin+GORM+[go-playground/validator v10]
目前遇到了一些问题,
我设置了gorm设置数据库用户表中的username字段unique唯一。
设想是当用户注册的时候,输入已存在的用户名username会提示已经注册了!
请问我应该如何实现唯一性的判断呢?我在User结构体上设置了tag,validate:"unique=users"。 但是validator好像不能这么用。
```
type User struct {
gorm.Model
Username string `gorm:"unique;notnull" validate:"unique=users"`
Password string `gorm:"notnull"`
PasswordConfirmation string `gorm:"-" json:"password_confirmation" binding:"required" validate:"required,eqfield=Password"`
}
```
更多评论
对gorm/validator不熟悉,看的很懵。
理论上说,这种唯一字段的判断,应该不是orm的事,是表单验证的事。
数据库和表单是完全不应该有任何关联的两种对象,一个是用户输入,一个是数据持久化,明显应该用两个不同的struct。
所以,正常情况下,对唯一性的判断要做两件事情。
一个是验证时查找数据库,就是说,理论上你需要一个自定义的验证方法。
另一个是插入失败后的处理。
另外不得不说,不管是orm还是表单验证,通过tag来做真的实在不符合我的审美……
#2