Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menentukan Tarikh Lalai dalam Dokumen MongoDB Menggunakan Mgo Go?

Bagaimana untuk Menentukan Tarikh Lalai dalam Dokumen MongoDB Menggunakan Mgo Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-22 17:03:531078semak imbas

How to Define Default Dates in MongoDB Documents Using Go's Mgo?

Menentukan Tarikh Lalai dalam Dokumen Mongo dengan Mgo Go

Dalam MongoDB, adalah perkara biasa untuk menentukan cap masa lalai untuk medan dokumen. Walau bagaimanapun, dalam Go with Mgo, tiada cara langsung untuk menetapkan nilai lalai untuk medan.

Pembina Tersuai dengan Nilai Lalai

Satu pendekatan ialah mencipta fungsi pembina tersuai yang mengisi nilai lalai:

func NewUser() *User {
    return &User{
        CreatedAt: time.Now(),
    }
}

Ini memastikan bahawa setiap struct Pengguna baharu yang dibuat menggunakan pembina ini akan mempunyai CreatedAt lalai medan.

Marshaler GetBSON Tersuai

Pilihan lain adalah untuk melaksanakan logik siri tersuai menggunakan antara muka bson.Getter BSON:

func (u *User) GetBSON() (interface{}, error) {
    if u.CreatedAt.IsZero() {
        u.CreatedAt = time.Now()
    }
    type my *User
    return my(u), nil
}

Apabila menggabungkan Pengguna ke BSON, ini Fungsi GetBSON akan digunakan dan mengisi medan CreatedAt dengan masa semasa jika belum lagi ditetapkan.

Pertimbangan

Perhatikan bahawa dengan mana-mana pendekatan, medan CreatedAt akan ditimpa dengan masa semasa walaupun semasa mengemas kini dokumen sedia ada. Untuk mengelakkan ini, anda boleh menambah semakan dalam GetBSON untuk hanya menetapkan medan jika ia adalah nilai sifar.

Selain itu, pendekatan marshaling tersuai memerlukan anda melaksanakan bson.Getter untuk sebarang jenis yang mengandungi masa.Masa medan dengan nilai lalai.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Tarikh Lalai dalam Dokumen MongoDB Menggunakan Mgo 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