我需要將時間戳createdAt和updatedAt屬性保存在資料庫中,但它們不會被自動保存,而是被保存為{T: 0, I: 0}. 我正在使用Mongo Driver來執行 CRUD 操作。
因此,這導致我在將當前時間附加到用戶模型時遇到另一個問題;我讀的地方,都createdAt和updatedAt必須primitive.Timestamp的,但我不知道如何真正拯救他們。我試過User.CreatedAt =:
time.Now()new primitive.Timestamp(time.Now(), 1))primitive.Timestamp{ T: uint32(time.Now().Unix()), I: 0 }(這似乎有效)
回到主要問題,最好的解決方案應該是資料庫允許我配置時間戳,以便在insertOne()觸發a 時自動保存。這可以始終作業,分配primitive.Timestamp給User.CreatedAt是正確的。
所以,這是我的模型:
package models
import (
"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
}
那么,像這樣管理時間戳是可以的,還是我弄錯了?
uj5u.com熱心網友回復:
您可以簡單地使用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 不會為您更新這些。在將它們存盤在資料庫中之前,您必須自己設定它們:
user.CreatedAt=time.Now()
user.UpdatedAd=user.CreatedAt
result, err := db.Collection(collection).InsertOne(context.TODO(), user)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/371078.html
上一篇:進口周期多于兩級
