数据库字段类型为 json 的字段默认值为 json_array(),gorm create 插入数据 , 没填值会被插入 null,该怎么让它是默认值呢
时间: 2024-03-11 20:51:38 浏览: 211
mysql查询的时候给字段赋默认值操作
在 GORM 中,你可以使用结构体的默认值来设置数据库字段的默认值。比如,你可以为结构体中的 json 字段设置一个默认值,然后在插入数据时,如果该字段没有被填充,则会使用默认值。
以下是一个示例代码:
```go
type MyModel struct {
ID uint `gorm:"primaryKey"`
Data map[string]interface{} `gorm:"type:json;default:json_array()"`
}
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// 自动迁移 schema
db.AutoMigrate(&MyModel{})
// 创建一条记录,不填 Data 字段
db.Create(&MyModel{})
// 查看记录,发现 Data 字段已经被设置为默认值
var m MyModel
db.First(&m)
fmt.Println(m.Data)
}
```
在上面的代码中,我们定义了一个名为 `MyModel` 的结构体,其中包含一个名为 `Data` 的字段,它的类型为 `map[string]interface{}`,并且设置了默认值为 `json_array()`。然后,我们使用 `db.Create()` 方法创建一条记录,不填 `Data` 字段。最后,我们使用 `db.First()` 方法查看该记录,发现 `Data` 字段已经被设置为默认值。
需要注意的是,如果使用 MySQL 数据库,需要将默认值设置为 `[]`,而不是 `json_array()`。因为 MySQL 不支持 `json_array()` 函数。
阅读全文