我想覆盖 GORM 中的 Id 值字段,因为我还使用 json 进行编码和解码。
package article
import "github.com/jinzhu/gorm"
type Article struct {
gorm.Model
Id int `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
Content string `json:"content"`
}
我希望像这样添加 gorm 属性
`gorm:"default:'galeone'"`
但是编译不了
package article
import "github.com/jinzhu/gorm"
type Article struct {
gorm.Model
Id uint `json:"id" sql:"AUTO_INCREMENT" gorm:"primary_key"`
Title string `json:"title"`
Description string `json:"description"`
Content string `json:"content"`
}
我在这里使用 Gorm [https://github.com/jinzhu/gorm][1]
我得到了
2016/12/21 15:17:48 DB Initialized successfully
(duplicate column name: id)
[2016-12-21 15:17:48]
(no such table: articles)
[2016-12-21 15:17:48]
这就是我创建数据库的方式,它工作正常,只需要在 Article 结构上自动递增
package dbprovider
import (
"github.com/jinzhu/gorm"
_"github.com/jinzhu/gorm/dialects/sqlite"
"rest/article"
"log"
)
var db gorm.DB
var isInitialized bool
func InitDb() {
isInitialized = false
db, err := gorm.Open("sqlite3", "../../articles.db")
if (db != nil && err == nil) {
log.Print("Db Initialized")
isInitialized = true
} else {
isInitialized = false
defer db.Close()
log.Panic("DB not initialized")
}
}
func AddArticle(article *article.Article) {
if (isInitialized) {
db.Create(&article)
}
}
最佳答案
首先。根据办公室指引
gorm:"default:'galeone'"
是你的字段默认值
引用:gormDefaultValue 当您不提供值(value)时。 所以您的 ID 字段需要更改。因为你的默认值是字符串 但字段是 int
Id int `json:"id" gorm:"default:1"`
和函数 InitDb。你重新定义了一个变量db。编译或者运行go程序的时候会报错。你需要换两行 1. var db gorm.DB -> var db *gorm.DB 2. 函数初始化数据库
func InitDb() {
isInitialized = false
//Change below code
var err interface{}
db, err = gorm.Open("sqlite3", "../../articles.db")
if (db != nil && err == nil) {
log.Print("Db Initialized")
isInitialized = true
} else {
isInitialized = false
defer db.Close()
log.Panic("DB not initialized")
}
关于json - 如何使用 json 将自动增量添加到 Go 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41257525/