为了账号安全,请及时绑定邮箱和手机立即绑定

如何将记录器正确注入到代码的数据库层中?

如何将记录器正确注入到代码的数据库层中?

Go
繁华开满天机 2022-09-26 17:20:43
我的主要问题是如何将记录器注入到附加到模型的函数中?例如,如果我们有一个用户模型type User struct { id string `json:"id" bson:"id"` name string `json:"name" bson:"name"`}然后让我们有一个函数附加到它func (user *User) Save() { ...}现在我想做的是创建一个结构,其中包含记录器和其他附加信息type UserStruct struct { logger ... dbConn ... ...}现在我的问题是,如果我将其注入控制器,那么他们将可以访问他们不需要的对象。我找不到一种很好的方法将这些与控制器隔离开来,而只将模型上的函数注入控制器。
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

我建议不要在 Go 中实现活动记录模式,而是使用持久性层来接收所有这些数据对象,例如 。例如:User


type Persistence struct {

    logger logging.Logger

    conn   *mongo.Client

    // ...

}


func NewPersistence(...) (*Persistence, error) {

    // connect to mongo etc

    return &Persistence{...}, nil

}


func (p *Persistence) SaveUser(user *User) error {

    // ...

}


func (p *Persistence) FindUserByName(username string) (*User, error) {

    // ...

}


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号