2016-04-07 10 views
2

Aşağıdaki modeli ... Ben birkaç farklı yollar denedimGolangs Gorm'da UUID'yi nasıl yapıyorsunuz?

type User struct { 
    ID  string `sql:"type:uuid;primary_key;default:uuid_generate_v4()"` 
    FirstName string `form:"first_name" json:"first_name,omitempty"` 
    LastName string `form:"last_name" json:"last_name,omitempty"` 
    Password string `form:"password" json:"password" bindind:"required"` 
    Email  string `gorm:"type:varchar(110);unique_index" form:"email" json:"email,omitempty" binding:"required"` 
    Location string `form:"location" json:"location,omitempty"` 
    Avatar string `form:"avatar" json:"avatar,omitempty"` 
    BgImg  string `form:"bg_img" json:"bg_img,omitempty"` 
    CreatedAt time.Time 
    UpdatedAt time.Time 
    DeletedAt time.Time 
} 

var, ama bu şekilde (pq: relation "users" does not exist) atar. İlgili modelim yok, kelimenin tam anlamıyla sadece bir model.

kullanıyorum denedim

... Bir uuid lib ile birlikte

func (user *User) BeforeCreate(scope *gorm.Scope) error { 
    scope.SetColumn("ID", uuid.NewV4()) 
    return nil 
} 

ama ya bu hiçbir şans oldu.

+0

kullanıcıların bu görünüyor Yani ... Olması gereken zaman

func (user *User) BeforeCreate(scope *gorm.Scope) error { scope.SetColumn("ID", uuid.NewV4()) return nil } 

... yanlış tipi, yaptığımı olarak UUID'sini depolamak için çalışıyordu çıkıyor veritabanı veritabanında mevcut değil. Onu otomatikleştirdin mi? – Apin

cevap

0

(pq: relation "users" does not exist) hatası, genellikle, tablosundakiusers veritabanında bulunmadığı anlamına gelir. İki model arasındaki ilişkiyle hiçbir ilgisi yok.

Temel olarak, ilk önce tabloyu veritabanında oluşturmanız gerekir (Veya, otomatik olarak veritabanını @Apin önerisine göre geçir). Ve aynı kodu tekrar çalıştırmayı deneyin.

2

Ben

func (user *User) BeforeCreate(scope *gorm.Scope) error { 
    scope.SetColumn("ID", uuid.NewV4().String()) 
    return nil 
} 
+0

'SetColumn' sonucunu yoksaymak yerine, kapsamı kullanın.Çekirdek ("ID", uuid.NewV4(). String()) 'kullanmalısınız – Artmann

İlgili konular