亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自動在 gorm 中插入哈希編碼數據

自動在 gorm 中插入哈希編碼數據

Go
狐的傳說 2022-09-26 15:17:27
我有一個表示我的用戶數據的表。有一個表示電話號碼的字段,我想在更新或插入時自動將其哈希存儲在數據庫中。所以我的模型是:type Users struct {    gorm.Model    ID          uint          `gorm:"autoIncrement;unique" json:"id"`    PhoneNumber string        `json:"phone_number"`    HashID      string        `gorm:"primaryKey" json:"hash_id"`    Name        string        `gorm:"default:dear user" json:"name"`    Rank        uint          `json:"rank"`    Score       uint          `json:"score"`    Image       string        `json:"image"`    Email       string        `json:"email"`    Address     string        `json:"address"`    Birthday    string        `json:"birthday"`    Biography   string        `json:"biography"}在插入或更新數據時,如何告訴 GORM 使用“電話號碼”列的 sha256 哈希代碼填充 HashID 列?
查看完整描述

1 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

你需要這樣的東西:


package main


import (

    "crypto/sha256"


    "fmt"


    "gorm.io/driver/sqlite"

    "gorm.io/gorm"

)


type Users struct {

    gorm.Model

    Key  string `json:"phone_number"`

    Hash string `gorm:"primaryKey" json:"hash_id"`

}


func (u *Users) BeforeCreate(tx *gorm.DB) (err error) {

    h := sha256.Sum256([]byte(u.Key))

    u.Hash = fmt.Sprintf("%x", h[:])

    return nil

}


func (u *Users) BeforeSave(tx *gorm.DB) (err error) {

    h := sha256.Sum256([]byte(u.Key))

    u.Hash = fmt.Sprintf("%x", h[:])

    return nil

}


func main() {

    db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})

    if err != nil {

        panic("failed to connect database")

    }


    db.AutoMigrate(&Users{})


    u := Users{Key: "123"}

    db.Create(&u)

}

檢查 https://gorm.io/docs/index.html


查看完整回答
反對 回復 2022-09-26
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號