Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menambah Cap Masa Created_at dan Updated_at secara Automatik pada Dokumen MongoDB Menggunakan Go?

Bagaimana untuk Menambah Cap Masa Created_at dan Updated_at secara Automatik pada Dokumen MongoDB Menggunakan Go?

Susan Sarandon
Susan Sarandonasal
2024-11-26 08:29:08671semak imbas

How to Automatically Add Created_at and Updated_at Timestamps to MongoDB Documents Using Go?

Menambah Medan Created_at dan Updated_at Automatik dalam Struktur Golang untuk MongoDB

Memasukkan data ke dalam MongoDB dengan struct Go memerlukan pengendalian populasi automatik create_at dan medan updated_at, ciri yang tidak disokong oleh MongoDB pelayan.

Untuk menangani perkara ini, pertimbangkan untuk melaksanakan marshaler tersuai dengan melaksanakan antara muka bson.Marshaler. Fungsi MarshalBSON() akan digunakan apabila mengekalkan nilai jenis Pengguna.

Berikut ialah coretan kod yang menunjukkan pelaksanaan:

type User struct {
    ID           primitive.ObjectID `bson:"_id,omitempty"`
    CreatedAt    time.Time          `bson:"created_at"`
    UpdatedAt    time.Time          `bson:"updated_at"`
    Name         string             `bson:"name"`
}

func (u *User) MarshalBSON() ([]byte, error) {
    if u.CreatedAt.IsZero() {
        u.CreatedAt = time.Now()
    }
    u.UpdatedAt = time.Now()

    type my User
    return bson.Marshal((*my)(u))
}

Perhatikan bahawa kaedah MarshalBSON() menggunakan penuding penerima, jadi anda perlu menggunakan penuding kepada tika Pengguna.

Contoh penggunaan:

user := &User{Name: "username"}

c := client.Database("db").Collection("collection")
if _, err := c.InsertOne(context.Background(), user); err != nil {
    // handle error
}

Dengan menggunakan teknik ini, anda boleh mengemas kini medan create_at dan updated_at secara automatik apabila memasukkan atau mengemas kini dokumen MongoDB melalui struct Go.

Atas ialah kandungan terperinci Bagaimana untuk Menambah Cap Masa Created_at dan Updated_at secara Automatik pada Dokumen MongoDB Menggunakan 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