Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menetapkan Cap Masa Semasa Lalai untuk Medan Tarikh dalam Mongoose Menggunakan Go?

Bagaimanakah Saya Boleh Menetapkan Cap Masa Semasa Lalai untuk Medan Tarikh dalam Mongoose Menggunakan Go?

Susan Sarandon
Lepaskan: 2024-11-25 10:10:47
asal
795 orang telah melayarinya

How Can I Set a Default Current Timestamp for a Date Field in Mongoose Using Go?

Lalai Tarikh Tersuai dengan Mgo

Dalam Mongoose, adalah mungkin untuk mentakrifkan skema dengan nilai Date.now lalai. Walau bagaimanapun, dalam Go, nilai lalai tidak dibenarkan untuk medan, jadi pendekatan yang berbeza diperlukan.

Fungsi Pembina

Satu penyelesaian ialah mencipta seperti pembina fungsi, seperti NewUser(), yang menetapkan medan CreatedAt kepada masa semasa:

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

Walau bagaimanapun, kaedah ini tidak akan menguatkuasakan penciptaan kejadian baharu melalui fungsi ini atau cap masa tika itu apabila ia disimpan.

Pengawalan Tersuai

Penyelesaian yang lebih mantap melibatkan pelaksanaan pengkajian tersuai logik melalui antara muka bson.Getter. Ini membenarkan untuk mengubah suai nilai yang disimpan sebelum ia disimpan:

type User struct {
    CreatedAt time.Time `json:"created_at" bson:"created_at"`
}

func (u *User) GetBSON() (interface{}, error) {
    u.CreatedAt = time.Now()
    type my *User
    return my(u), nil
}
Salin selepas log masuk

Dalam kaedah GetBSON(), medan CreatedAt dikemas kini dengan masa semasa. Untuk mengelakkan limpahan tindanan, jenis baharu, my, diperkenalkan. Jenis baharu ini tidak mewarisi pelaksanaan bson.Getter, memecahkan gelung rekursif.

Semakan tambahan boleh ditambah untuk memastikan medan CreatedAt hanya ditetapkan jika pada mulanya kosong:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Cap Masa Semasa Lalai untuk Medan Tarikh dalam Mongoose Menggunakan 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