Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah anda menyepadukan medan gorm.Model ke dalam definisi Protobuf semasa mengendalikan jenis datetime, dan apakah kebaikan dan keburukan kaedah yang berbeza?
Mengintegrasikan medan Gorm.Model ke dalam takrifan protobuf menjadi perlu apabila menstruktur data untuk penggunaan pangkalan data. Walaupun protobuf kekurangan jenis datetime, penyelesaian boleh dibuat dengan menyesuaikan kod protobuf yang dijana.
Penyelesaian Gagal Menggunakan protoc-gen-gorm
Percubaan untuk melaksanakan projek protoc-gen-gorm terbukti sia-sia kerana potensi pertembungan antara proto2 dan proto3 semasa proses pengadunan.
Skrip Tersuai untuk Pemprosesan Pasca
Pendekatan alternatif ialah dengan buat skrip tersuai untuk pemprosesan pasca selepas menjana fail go daripada protobuf. Berikut ialah pecahan penyelesaian:
Fail Protobuf Asal
<code class="proto">message Profile { uint64 id = 1; string name = 2; bool active = 3; }</code>
Fail Protobuf Go Dijana
<code class="go">type Profile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` }</code>
Skrip GORM Tersuai
<code class="bash">g () { sed "s/json:\",omitempty\"/json:\",omitempty\" gorm:\"type:\"/" } cat \ | g "id" "primary_key" \ | g "name" "varchar(100)" \ > .tmp && mv {.tmp,}</code>
Fail Protobuf Go Selepas Diproses
<code class="go">type Profile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"type:primary_key"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" gorm:"type:varchar(100)"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` }</code>
Skrip ini menambahkan tag medan gorm pada protobuf Go yang dihasilkan fail, membenarkan penyepaduan definisi protobuf dengan medan gorm.Model untuk interaksi pangkalan data yang lancar.
Atas ialah kandungan terperinci Bagaimanakah anda menyepadukan medan gorm.Model ke dalam definisi Protobuf semasa mengendalikan jenis datetime, dan apakah kebaikan dan keburukan kaedah yang berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!