Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menetapkan Tarikh dan Masa Lalai pada Sisipan Dokumen dalam Go?

Bagaimana untuk Menetapkan Tarikh dan Masa Lalai pada Sisipan Dokumen dalam Go?

Linda Hamilton
Lepaskan: 2024-12-08 04:15:14
asal
1013 orang telah melayarinya

How to Set a Default Date and Time on Document Insertion in Go?

Menetapkan Tarikh Lalai pada Sisipan Dokumen dengan Masa. Medan Masa dalam Go

Dalam Go, tidak seperti Mongoose dalam Node.js, nilai lalai tidak boleh diberikan kepada medan dalam definisi struct. Untuk mencapai hasil yang sama, terdapat berbilang pendekatan yang tersedia.

Satu kaedah adalah untuk mencipta fungsi seperti pembina yang membuat instantiate struct baharu dan menetapkan medan CreatedAt kepada masa semasa. Fungsi ini kemudiannya boleh digunakan untuk mencipta pengguna baharu, memastikan medan ditetapkan secara konsisten.

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

Walau bagaimanapun, pendekatan ini mempunyai had kerana ia memerlukan pematuhan ketat untuk menggunakan fungsi ini untuk mencipta pengguna baharu dan tidak menangkap cap masa bagi sisipan dokumen.

Penyelesaian yang lebih serba boleh melibatkan pelaksanaan logik marshaling tersuai dengan melaksanakan bson.Getter antara muka. Kaedah GetBSON() membenarkan pengubahsuaian nilai yang disimpan dalam pangkalan data.

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

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

Kaedah ini menyemak sama ada medan CreatedAt kosong dan menetapkannya kepada masa semasa jika ada. Ia juga mengelakkan limpahan tindanan dengan mengembalikan jenis baharu yang tidak melaksanakan antara muka bson.Getter.

Pendekatan ini memastikan bahawa medan CreatedAt dikemas kini secara automatik apabila dokumen disimpan, tanpa menulis gantinya jika medan sudah mengandungi suatu nilai. Ia memberikan fleksibiliti yang lebih besar dan selaras dengan kelakuan yang dijangkakan untuk menetapkan nilai lalai semasa memasukkan dokumen.

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Tarikh dan Masa Lalai pada Sisipan Dokumen dalam 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