猿问

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

我的主要问题是如何将记录器注入到附加到模型的函数中?例如,如果我们有一个用户模型


type User struct {

 id string `json:"id" bson:"id"`

 name string `json:"name" bson:"name"`

}

然后让我们有一个函数附加到它


func (user *User) Save() {

 ...

}

现在我想做的是创建一个结构,其中包含记录器和其他附加信息


type UserStruct struct {

 logger ...

 dbConn ...

 ...

}

现在我的问题是,如果我将其注入控制器,那么他们将可以访问他们不需要的对象。我找不到一种很好的方法将这些与控制器隔离开来,而只将模型上的函数注入控制器。


繁华开满天机
浏览 82回答 1
1回答

MYYA

我建议不要在 Go 中实现活动记录模式,而是使用持久性层来接收所有这些数据对象,例如 。例如:Usertype 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) {    // ...}
随时随地看视频慕课网APP

相关分类

Go
我要回答