Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengautomasikan Created_at dan Updated_at Timestamp dalam MongoDB menggunakan BSON Marshaler Go?
Mengautomasikan Populasi Medan Created_at dan Updated_at dalam MongoDB
Dalam coretan kod Go yang disediakan, struct Pengguna mentakrifkan medan untuk _id, created_at, updated_at , dan nama. Apabila objek Pengguna baharu dimasukkan ke dalam pangkalan data menggunakan InsertOne(), medan create_at dan updated_at tidak diisi secara automatik dengan cap masa.
Soalan: Bagaimanakah anda boleh menggunakan created_at dan updated_at automatik dalam kod Go yang disediakan dengan MongoDB hanya menggunakan MongoDB pemandu?
Penyelesaian: Pelayan MongoDB tidak mengendalikan autopopulasi cap masa untuk medan ini secara automatik. Walau bagaimanapun, anda boleh melaksanakan fungsi ini secara manual dengan melaksanakan Marshaler tersuai untuk struct Pengguna anda.
Untuk mencipta Marshaler tersuai, laksanakan antara muka bson.Marshaler. Kaedah MarshalBSON() akan dipanggil apabila nilai *jenis Pengguna dimarshallkan untuk dimasukkan ke dalam pangkalan data.
Berikut ialah contoh bagaimana ini boleh dilaksanakan:
func (u *User) MarshalBSON() ([]byte, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } u.UpdatedAt = time.Now() type my User return bson.Marshal((*my)(u)) }
Perhatikan bahawa kaedah MarshalBSON() mempunyai penerima penunjuk, jadi anda mesti menggunakan penunjuk kepada nilai Pengguna apabila memasukkan:
user := &User{Name: "username"} err := client.Database("db").Collection("collection").InsertOne(context.Background(), user) if err != nil { // handle error }
Tujuan jenis saya adalah untuk mengelakkan limpahan tindanan semasa proses marshaling.
Atas ialah kandungan terperinci Bagaimana untuk mengautomasikan Created_at dan Updated_at Timestamp dalam MongoDB menggunakan BSON Marshaler Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!