首頁 >後端開發 >Golang >如何為 Go Mongoose 文件中的欄位設定預設日期和時間?

如何為 Go Mongoose 文件中的欄位設定預設日期和時間?

Susan Sarandon
Susan Sarandon原創
2024-11-23 02:07:11405瀏覽

How Can I Set a Default Date and Time for a Field in a Go Mongoose Document?

插入有Time.Time 欄位的文件時設定預設日期

在mongoose 中,為日期欄位設定預設值很簡單,但是在使用mgo 的Go 中,情況有點不同。

為什麼不能設定預設值Go 中的欄位?

Go 不允許欄位使用預設值。創建後,它們將具有其類型的零值。

解決方案 1:類別建構子

一種方法是建立一個類別建構函數,初始化 CreatedAt 欄位。但是,它不處理時間戳需要與資料庫時間戳匹配的情況。

解決方案 2:自訂封送邏輯

更好的解決方案涉及實現自訂 bson。 Getter 邏輯。

GetBSON()函數

Go 實作中的 GetBSON() 函數提供了一個要儲存的值。在本例中,我們希望在儲存之前將 CreatedAt 欄位設定為目前時間。

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

建立新類型

請注意,一個新類型,我的, 創建並返回以防止無限遞歸。

處理現有的記錄

新增檢查可確保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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn