2016-12-21 17 views
1

EDITED私はjsonをmarchalとunmarshallにも使用しているため、GORMのId値フィールドをオーバーライドしたいと思います。 パッケージ品jsonを使ってGo構造体にオートインクリメントを追加する方法

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:"default:'galeone'"` 

ようGORMプロパティを追加したい

しかし、それは私が私が[https://github.com/jinzhu/gorm][1]

ここからゴームを使用しています

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"` 
} 

をコンパイルされていません

を取得3210
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] 

これは、私はそれだけで記事の構造体

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) 
    } 
} 

答えて

1

まず上の自動インクリメントをしたい正常に動作しているDBを作成しています方法です。 gormDefaultValue をあなたが価値を与えていないとき:オフィスガイドラインによると gorm:"default:'galeone'"ことはあなたのフィールドのデフォルト値

を参照してくださいです。 ので、あなたのIDフィールドは変更する必要があります。デフォルト値は、文字列 ですが、フィールドは

Id int `json:"id" gorm:"default:1"` 

int型とFUNCをinitdbの上にあるため。変数dbを再定義します。コンパイル時または実行時にエラーが発生します。 >のvarデシベル* gorm.DB 2. FUNC initdbを

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") 
} 

}

- 次の2つのライン 1のvarデシベルgorm.DBを変更する必要があります
関連する問題