使用 Mgo 自定义默认日期
在 Mongoose 中,可以使用默认的 Date.now 值定义模式。然而,在 Go 中,字段不允许使用默认值,因此需要一种不同的方法。
构造函数
一种解决方案是创建一个类似构造函数的函数函数,例如 NewUser(),它将 CreatedAt 字段设置为当前时间:
func NewUser() *User { return &User{ CreatedAt: time.Now(), } }
但是,此方法不会通过此函数强制创建新实例,或在保存实例时为实例添加时间戳。
自定义封送处理
更强大的解决方案包括通过 bson 实现自定义封送逻辑。吸气剂接口。这允许在保存之前修改存储的值:
type User struct { CreatedAt time.Time `json:"created_at" bson:"created_at"` } func (u *User) GetBSON() (interface{}, error) { u.CreatedAt = time.Now() type my *User return my(u), nil }
在 GetBSON() 方法中,CreatedAt 字段将更新为当前时间。为了避免堆栈溢出,引入了一种新类型 my。这个新类型不会继承 bson.Getter 实现,从而打破了递归循环。
可以添加额外的检查以确保 CreatedAt 字段仅在最初为空时才被设置:
func (u *User) GetBSON() (interface{}, error) { if u.CreatedAt.IsZero() { u.CreatedAt = time.Now() } type my *User return my(u), nil }
以上是如何使用 Go 为 Mongoose 中的日期字段设置默认当前时间戳?的详细内容。更多信息请关注PHP中文网其他相关文章!