使用 Mgo 自訂預設日期
在 Mongoose 中,可以使用預設的 Date.now 值定義模式。然而,在 Go 中,欄位不允許使用預設值,因此需要不同的方法。
建構子
一個解決方案是建立一個類似建構子的函數函數,例如NewUser(),它將CreatedAt 欄位設定為目前時間:
func NewUser() *User { return &User{ CreatedAt: time.Now(), } }
但是,此方法不會透過此函數強制建立新實例,或在儲存實例時為實例新增時間戳記。
自訂封送處理
更強大的解決方案包括透過 bson 實作自訂封送邏輯。吸氣劑接口。這允許在保存之前修改儲存的值:
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 }
在 GetBSON() 方法中,CreatedAt 欄位將更新為當前時間。為了避免堆疊溢出,引入了一種新類型 my。這個新型別不會繼承 bson.Getter 實現,從而打破了遞迴迴圈。
可以添加額外的檢查以確保 CreatedAt 欄位僅在最初為空時才被設定:
func (u *User) GetBSON() (interface{}, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } type my *User return my(u), nil }
以上是如何使用 Go 為 Mongoose 中的日期欄位設定預設目前時間戳記?的詳細內容。更多資訊請關注PHP中文網其他相關文章!