使用Go 資料庫驅動程式在MongoDB 中自動建立Created_at 和Updated_at 欄位
在Go 中,當使用MongoDB 資料庫created_at結構體中的update_at 欄位在插入期間不會自動填入時間戳記。為了解決這個問題,可以實作一個自訂封送拆收器來在將結構儲存到 MongoDB 之前更新這些欄位。
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)) }
在儲存 *User 類型的值時呼叫 MarshalBSON() 方法,並確保在將物件編組為 BSON 表示之前,created_at 和 Updated_at 欄位設定為目前時間。
要使用此自訂編組器,請實例化一個指標到您的User 物件並將其插入MongoDB 集合中:
user := &User{Name: "username"} c := client.Database("db").Collection("collection") if _, err := c.InsertOne(context.Background(), user); err != nil { // handle error }
透過實作MarshalBSON() 方法,您可以在將Go 結構體儲存到MongoDB 時自動為created_at和updated_at欄位產生時間戳,從而確保欄位已正確填入目前時間。
以上是如何使用 Go 的 BSON Marshaler 自動填入 MongoDB 中的 Created_at 和 Updated_at 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!