我试图为用户注册制作一个休息 API,在该 API 上有一个名为“性别”的字段,所以我将该字段作为 Struct 接收,但在用户表上没有“性别”字段。是否可以在使用 gorm 插入时从结构中跳过该“性别”字段?
这是我的数据模型
package DataModels
type User struct {
Id uint `json:"id"`
Otp int `json:"otp"`
UserId string `json:"user_id"`
UserType string `json:"user_type"`
FullName string `json:"full_name"`
MobileNo string `json:"mobile"`
Email string `json:"email"`
Gender string `json:"gender"` // I want to skip this filed while inserting to users table
Password string `json:"password"`
}
func (b *User) TableName() string {
return "users"
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器功能
func CreateUser(c *gin.Context) {
var user Models.User
_ = c.BindJSON(&user)
err := Models.CreateUser(&user) // want to skip that gender filed while inserting
if err != nil {
fmt.Println(err.Error())
c.AbortWithStatus(http.StatusNotFound)
} else {
c.JSON(http.StatusOK, user)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我用于插入的模型函数
func CreateUser(user *User) (err error) {
if err = Config.DB.Create(user).Error; err != nil {
return err
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
Eklavyas Answer 总是省略性别,不仅仅是在 Create 上。
如果我是正确的,您想跳过注册中的性别字段。您可以使用Omit来实现这一点。
db.Omit("Gender").Create(&user)
Run Code Online (Sandbox Code Playgroud)