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

Mary-Kate Olsen
Lepaskan: 2024-11-22 17:03:53
asal
980 orang telah melayarinya

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(),
    }
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan