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

我试图为用户注册创建一个休息 API,在该 api 上有一个名为“gender”的字段,所以我将该字段作为 Struct 接收,但在用户表上没有“gender”字段。使用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"

}

这是我的控制器功能


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)

    }

}

这是我插入的模型函数


func CreateUser(user *User) (err error) {

    if err = Config.DB.Create(user).Error; err != nil {

        return err

    }

    return nil

}


侃侃尔雅
浏览 802回答 2
2回答

芜湖不芜

GORM允许你忽略带有标签的字段,gorm:"-"用来忽略字段type User struct {    ...    Gender   string `json:"gender" gorm:"-"` // ignore this field when write and read}有关字段级权限的官方文档详细信息

斯蒂芬大帝

Eklavyas Answer 总是省略性别,而不仅仅是在 Create 上。如果我是正确的,您想跳过注册中的性别字段。您可以为此使用Omit。db.Omit("Gender").Create(&user)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go