Dengan perkembangan pesat Internet dan populariti pengkomputeran awan, pemprosesan data berskala besar telah menjadi topik yang semakin penting. Sebagai pangkalan data hubungan yang matang, pangkalan data MySQL memainkan peranan penting dalam penyimpanan data dan pemprosesan data.
Untuk beberapa senario perniagaan yang kompleks, kami perlu melakukan beberapa pemprosesan tambahan pada operasi pangkalan data ini dipanggil "pasca pengesahan". Artikel ini terutamanya memperkenalkan cara menggunakan beberapa alatan untuk melaksanakan pasca pengesahan operasi data pangkalan data MySQL dalam bahasa Go.
1. Gambaran Keseluruhan Pengesahan
Pasca pengesahan boleh mengesahkan keputusan yang dikembalikan selepas operasi data pangkalan data selesai untuk memastikan integriti dan ketepatan data. Ia boleh dibahagikan kepada aspek berikut:
2. Pengesahan pasca operasi data menggunakan bahasa Go
Pakej sql yang disertakan dengan bahasa tersebut menyediakan operasi pangkalan data asas, tetapi tidak termasuk pasca pengesahan. Artikel ini memperkenalkan dua alatan bahasa Go yang biasa digunakan untuk melaksanakan pasca pengesahan.
GORM ialah perpustakaan ORM yang menyokong MySQL, PostgreSQL, SQLite dan pelayan SQL, yang membolehkan kami melaksanakan operasi pangkalan data dengan lebih mudah dan selamat. Struktur Model boleh menganotasi jadual dan medan, dan anotasi ini boleh memberi kami lebih banyak asas untuk pengesahan selepas. Kita boleh menambah kod yang ingin kita laksanakan dalam kitaran hayat operasi GORM pada pangkalan data melalui kaedah Pramuat() dan fungsi Panggilan Balik sebelum memasukkan atau mengemas kini data.
Sebagai contoh, kod berikut menunjukkan cara menggunakan GORM untuk memasukkan data:
import ( "gorm.io/driver/mysql" "gorm.io/gorm" ) type User struct { gorm.Model Name string Age uint8 Email string } func main() { dsn := "root:password@tcp(127.0.0.1:3306)/test_db?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } user := User{Name: "Leo", Age: 18, Email: "leo@example.com"} db.Create(&user) }
Untuk menjadikan kod di atas lebih selamat, beberapa pengesahan data perlu dilakukan. Sebagai contoh, anda boleh menambah had panjang pada medan Nama dan E-mel dalam struktur Pengguna dan menentukan sama ada input pengguna kosong. Sebelum memasukkan data, anda boleh menggunakan fungsi Panggilan Balik GORM untuk mengesahkan.
func (u *User) BeforeCreate(tx *gorm.DB) (err error) { if len(u.Name) == 0 || len(u.Name) > 50 { return errors.New("invalid user name") } if len(u.Email) == 0 || len(u.Email) > 50 { return errors.New("invalid email") } return } func main() { // Code ... user := User{Name: "Leo", Age: 18, Email: "leo@example.com"} if err := db.Create(&user).Error; err != nil { panic(err) } }
Di sini, fungsi BeforeCreate menunjukkan pengesahan sebelum operasi Cipta Jika data tidak memenuhi keperluan, ralat akan dikembalikan. Operasi Cipta akan dilaksanakan hanya selepas pengesahan data berlalu.
GORM juga boleh menggunakan fungsi Panggilan Balik untuk melaksanakan pengesahan dalam kitaran hayat lain, seperti Kemas Kini, Padam, Pertanyaan dan operasi lain. Dengan cara ini, data boleh disahkan dengan lebih teliti sebelum mengendalikan data.
go-validator ialah perpustakaan pengesahan data untuk bahasa Go, menyokong pengesahan jenis data asas, pengesahan ungkapan biasa dan pengesah penyesuaian. Menggunakan go-validator, pengguna boleh melakukan semakan jenis, semakan panjang dan operasi lain pada data sebelum melakukan pengesahan data untuk memastikan penyeragaman dan integriti data.
import ( "github.com/asaskevich/govalidator" ) type User struct { Name string `valid:"required,stringlength(1|50)"` Age int `valid:"required,integer"` Email string `valid:"required,email"` } user := User{Name: "Leo", Age: 18, Email: "leo@example.com"} if _, err := govalidator.ValidateStruct(user); err != nil { panic(err) }
Dalam kod di atas, kami menambah anotasi yang sah pada struktur Pengguna dan menentukan jenis data yang diperlukan, had panjang dan sama ada ia diperlukan. Apabila mengesahkan parameter, anda hanya perlu memanggil fungsi gabenor.ValidationStruct().
3. Ringkasan
Apabila menjalankan pemprosesan data berskala besar, integriti dan ketepatan data adalah penting. Sebelum mengendalikan pangkalan data MySQL, kami perlu melakukan beberapa pengesahan pasca untuk mengelakkan pelbagai ralat yang tidak dapat dijelaskan. Artikel ini memperkenalkan kaedah menggunakan GORM dan go-validator dan alatan lain untuk pasca pengesahan dalam bahasa Go. Saya harap ia dapat membantu semua orang semasa mengendalikan pangkalan data MySQL.
Atas ialah kandungan terperinci Pasca pengesahan operasi data dalam pangkalan data MySQL menggunakan bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!