1 回答

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)型的目的是避免堆棧溢出。
- 1 回答
- 0 關(guān)注
- 261 瀏覽
添加回答
舉報(bào)