第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

自動在 gorm 中插入哈希編碼數(shù)據(jù)

自動在 gorm 中插入哈希編碼數(shù)據(jù)

Go
狐的傳說 2022-09-26 15:17:27
我有一個表示我的用戶數(shù)據(jù)的表。有一個表示電話號碼的字段,我想在更新或插入時自動將其哈希存儲在數(shù)據(jù)庫中。所以我的模型是: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"}在插入或更新數(shù)據(jù)時,如何告訴 GORM 使用“電話號碼”列的 sha256 哈希代碼填充 HashID 列?
查看完整描述

1 回答

?
回首憶惘然

TA貢獻1847條經(jīng)驗 獲得超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


查看完整回答
反對 回復(fù) 2022-09-26
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號