Golang gorm 结构体定义使用

本文介绍了如何使用GORM库在Go语言中定义用户注册表单结构,包括字段验证、权限控制以及创建/更新时间的处理。同时展示了如何使用gorm标签进行字段级别的操作,如唯一约束和JSON序列化控制。
摘要由CSDN通过智能技术生成

一、定义一个用户注册的结构体

条件:1、用户名和密码不能为空,用户名长度大于2小于12 密码长度大于6小于12

type UserRegisterForm struct {
	UserName  string `json:"username" form:"username" query:"username" binding:"required,gte=2,lte=12"`
	PassWord  string `json:"password" form:"password" query:"password" binding:"required,gte=6,lte=12"`
	ShareCode string `json:"share_code" form:"share_code" query:"share_code"`
	Phone     string `json:"phone" form:"phone" query:"phone"`
}

二、字段权限控制

GORM 允许您用标签控制字段级别的权限。这样您就可以让一个字段的权限是只读、只写、只创建、只更新或者被忽略

type User struct {
  Name string `gorm:"<-:create"` // 允许读和创建
  Name string `gorm:"<-:update"` // 允许读和更新
  Name string `gorm:"<-"`        // 允许读和写(创建和更新)
  Name string `gorm:"<-:false"`  // 允许读,禁止写
  Name string `gorm:"->"`        // 只读(除非有自定义配置,否则禁止写)
  Name string `gorm:"->;<-:create"` // 允许读和写
  Name string `gorm:"->:false;<-:create"` // 仅创建(禁止从 db 读)
  Name string `gorm:"-"`  // 通过 struct 读写会忽略该字段
}

 创建/更新时间

type User struct {
  CreatedAt time.Time // 在创建时,如果该字段值为零值,则使用当前时间填充
  UpdatedAt int       // 在创建时该字段值为零值或者在更新时,使用当前时间戳秒数填充
  Updated   int64 `gorm:"autoUpdateTime:nano"` // 使用时间戳填纳秒数充更新时间
  Updated   int64 `gorm:"autoUpdateTime:milli"` // 使用时间戳毫秒数填充更新时间
  Created   int64 `gorm:"autoCreateTime"`      // 使用时间戳秒数填充创建时间
}

三、定义表模型

type User struct {
	Name           string    `gorm:"type:varchar(20);unique;not null" json:"user_name"`
	Phone          string    `gorm:"type:varchar(20);unique;not null" json:"phone"`
    Password       string    `gorm:"type:blob" json:"-"`
}

注意点:当不需要返回该字段时可以设置 json:"-"

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值