我需要在數(shù)據(jù)庫中保存時間戳createdAt和updatedAt屬性,但它們不會自動保存,它們被保存為{T: 0, I: 0}. 我正在使用Mongo Driver執(zhí)行 CRUD 操作。因此,在將當前時間附加到用戶模型時,這導致了另一個問題;我在某處讀到兩者createdAt都updatedAt必須是primitive.Timestamp,但我不知道如何真正保存它們。我嘗試User.CreatedAt =過:time.Now()new primitive.Timestamp(time.Now(), 1))primitive.Timestamp{ T: uint32(time.Now().Unix()), I: 0 }(這似乎工作)回到主要問題,最好的解決方案應該是數(shù)據(jù)庫允許我配置時間戳,以便在insertOne()觸發(fā) a 時自動保存。primitive.Timestamp分配給User.CreatedAt正確的總是可行的。所以,這是我的模型:package modelsimport ( "go.mongodb.org/mongo-driver/bson/primitive")type User struct { Id primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"` Email string `bson:"email" json:"email"` CreatedAt primitive.Timestamp `bson:"createdAt" json:"createdAt"` UpdatedAt primitive.Timestamp `bson:"updatedAt" json:"updatedAt"`}這是我的服務:func CreateUser(user models.User) (models.User, error) { db := database.GetDatabase() result, err := db.Collection(collection).InsertOne(context.TODO(), user) if err != nil { return models.User{}, err } user.Id = result.InsertedID.(primitive.ObjectID) user.CreatedAt = primitive.Timestamp{ T: uint32(time.Now().Unix()), I: 0 } return user, nil}那么,可以像這樣管理時間戳還是我弄錯了?
1 回答

慕桂英546537
TA貢獻1848條經(jīng)驗 獲得超10個贊
您可以簡單地使用time.Time:
type User struct {
Id primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
Email string `bson:"email" json:"email"`
CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
}
MongoDB 不會為您更新這些內(nèi)容。在將它們存儲到數(shù)據(jù)庫之前,您必須自己設置它們:
user.CreatedAt=time.Now()
user.UpdatedAd=user.CreatedAt
result, err := db.Collection(collection).InsertOne(context.TODO(), user)
- 1 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消