1 回答

TA贡献1802条经验 获得超4个赞
和 驱动程序在将 Go 值转换为 BSON 值时检查并调用某些已实现的接口。实现 bson。元帅
和bson。在您的类型上取消marshaler
,您可以在保存之前/加载后做任何事情。mongo-go
mgo
调用默认的 bson。Marhsal()
和 bson.Unmarshal()
函数执行常规的封送处理/取消封送过程,如果成功,则在返回之前执行所需的操作。
例如:
// Called when an Attachment is saved.
func (a *Attachment) MarshalBSON() (data []byte, err error) {
data, err = bson.Marshal(a)
if err != nil {
return
}
// Do your additional thing here
return
}
// Called when an Attachment is loaded.
func (a *Attachment) UnmarshalBSON(data []byte) error {
if err := bson.Unmarshal(data, &a); err != nil {
return err
}
// Do your additional thing here
return nil
}
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报