第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

推入 mongodb 時(shí)自動(dòng)填充 golang 結(jié)構(gòu)中的 created_at

推入 mongodb 時(shí)自動(dòng)填充 golang 結(jié)構(gòu)中的 created_at

Go
有只小跳蛙 2022-12-05 11:12:12
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"`}user := User{Name: "username"}client.Database("db").Collection("collection").InsertOne(context.Background(), user)如何在 golang 中使用上面代碼中的自動(dòng) created_at 和 updated_at 以及 mongodb(僅限 mongodb 驅(qū)動(dòng)程序)?目前它將為 created_at 和 updated_at 設(shè)置零時(shí)間 (0001-01-01T00:00:00.000+00:00)。
查看完整描述

1 回答

?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

MongoDB 服務(wù)器不支持這個(gè)。

您可以實(shí)施自定義封送拆收器,您可以在其中根據(jù)自己的喜好更新這些字段。實(shí)現(xiàn)bson.Marshaler,MarshalBSON()當(dāng)您保存您的*User類(lèi)型的值時(shí),您的函數(shù)將被調(diào)用。

這就是它的樣子:

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))

}

請(qǐng)注意該方法具有指針接收器,因此請(qǐng)使用指向您的值的指針:


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



c := client.Database("db").Collection("collection")

if _, err := c.InsertOne(context.Background(), user); err != nil {

    // handle error

}

該my類(lèi)型的目的是避免堆棧溢出。


查看完整回答
反對(duì) 回復(fù) 2022-12-05
  • 1 回答
  • 0 關(guān)注
  • 261 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)