我的主要問題是如何將記錄器注入到附加到模型的函數(shù)中?例如,如果我們有一個用戶模型type User struct { id string `json:"id" bson:"id"` name string `json:"name" bson:"name"`}然后讓我們有一個函數(shù)附加到它func (user *User) Save() { ...}現(xiàn)在我想做的是創(chuàng)建一個結(jié)構(gòu),其中包含記錄器和其他附加信息type UserStruct struct { logger ... dbConn ... ...}現(xiàn)在我的問題是,如果我將其注入控制器,那么他們將可以訪問他們不需要的對象。我找不到一種很好的方法將這些與控制器隔離開來,而只將模型上的函數(shù)注入控制器。
1 回答

MYYA
TA貢獻1868條經(jīng)驗 獲得超4個贊
我建議不要在 Go 中實現(xiàn)活動記錄模式,而是使用持久性層來接收所有這些數(shù)據(jù)對象,例如 。例如: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) {
// ...
}
- 1 回答
- 0 關(guān)注
- 71 瀏覽
添加回答
舉報
0/150
提交
取消