Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengautomasikan Created_at dan Updated_at Timestamp dalam MongoDB menggunakan BSON Marshaler Go?

Bagaimana untuk mengautomasikan Created_at dan Updated_at Timestamp dalam MongoDB menggunakan BSON Marshaler Go?

DDD
DDDasal
2024-12-05 09:22:10234semak imbas

How to Automate Created_at and Updated_at Timestamps in MongoDB using Go's BSON Marshaler?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn