我需要在数据库中保存时间戳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 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条经验 获得超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 不会为您更新这些内容。在将它们存储到数据库之前,您必须自己设置它们:
user.CreatedAt=time.Now()
user.UpdatedAd=user.CreatedAt
result, err := db.Collection(collection).InsertOne(context.TODO(), user)
- 1 回答
- 0 关注
- 183 浏览
添加回答
举报
0/150
提交
取消
