• เพชรเกษม 81/5

Tip & Trick – GORM | ORM library for Golang


เอาปัญหาและวิธีแก้ไขสำหรับ GORM มารวม ๆ กันไว้เลย ถ้าเคนเจอ ทุกคนก็ต้องเจอแน่นอน

Query  ไม่ได้ติด Error (sql: Scan error on column index 1, name “created_at”: unsupported Scan, storing driver.Value type []uint8 into type *time.Time)

วิธีแก้คือไปทำการ parse time ครับ หรือเอาแบบง่ายๆ คือไปเพิ่มโค้ด ?parseTime=true ตอนต่อ Database แบบนี้

root:root@tcp(127.0.0.1:3306)/revelblog?parseTime=true

โค้ดตัวอย่างการ Insert ข้อมูลลง Database

สมมติเรามีการสร้าง Model ชื่อ Users ไว้อีกไฟล์นึงอยู่แล้ว และมีตัวแปล DB *gorm.DB อยู่ที่ไฟล์หลัก

// add value to model struct Users
user := models.Users{
  Username: username,
  Password: newHashPassword,
}

// insert to database
DB.Create(&user)

// if success to create to database this checker will return false
if DB.NewRecord(user) {
  fmt.Println("error can't insert to database. Please contact admin website")
  return
}

โค้ดตัวอย่างการ Query และเช็ค Hash Password

โค้ดส่วนนี้จะใช้ร่วมกับ Revel Framework
สมมติเรามีการสร้าง Model ชื่อ Users ไว้อีกไฟล์นึงอยู่แล้ว และมีตัวแปล DB *gorm.DB อยู่ที่ไฟล์หลัก

username := c.Params.Form.Get("inputUsername")
password := c.Params.Form.Get("inputPassword")

var user models.Users
DB.Where("username = ?", username).First(&user)

if user.Username == "" {
  fmt.Println("error username is not found.")
  return
}

err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
if err != nil {
  fmt.Println("error password is not correct.")
  return
}

 

Leave a Reply

Please Login to comment
avatar
  Subscribe  
Notify of