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.
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.
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.
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!