我需要在数据库中保存时间戳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
}
那么,可以像这样管理时间戳还是我弄错了?
阿晨1998
慕桂英546537
随时随地看视频慕课网APP
相关分类