如何在使用 gorm 插入时跳过结构中的特定字段

Moh*_*han 5 struct go go-gorm

我试图为用户注册制作一个休息 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)

Jul*_*ian 5

Eklavyas Answer 总是省略性别,不仅仅是在 Create 上。

如果我是正确的,您想跳过注册中的性别字段。您可以使用Omit来实现这一点。

db.Omit("Gender").Create(&user)
Run Code Online (Sandbox Code Playgroud)