亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Gorm 創建并返回值 many2many

Gorm 創建并返回值 many2many

Go
烙印99 2023-03-15 14:31:37
我想創建一個數據,然后返回值,但該值與另一個表相關。用戶響應結構type UserRespone struct {    ID        int           `json:"id,omitempty"`    Email     string        `json:"email"`    FirstName string        `json:"first_name"`    LastName  string        `json:"last_name"`    Address   string        `json:"address"`    Roles     []roles.Roles `json:"roles" gorm:"many2many:users_roles;foreignKey:ID;joinForeignKey:UserID;references:ID;joinReferences:RolesID"`}角色結構type Roles struct {    ID   int `json:"id" gorm:"<-:false;primaryKey"`    Name string}這是一個創建數據的函數,我想返回值 [ ]roles.Rolesfunc (r *UserRepositoryImpl) AuthSignUp(ctx context.Context, req user.AuthSignUp) (user.UserRespone, error) {    createdUser := req.ToUser()        hashPassword, _ := bcrypt.GenerateFromPassword([]byte(createdUser.Password), bcrypt.DefaultCost)    createdUser.Password = string(hashPassword[:])    result := r.Db.        WithContext(ctx).        Create(&createdUser)    for _, rolesID := range req.RolesID {        userRole := new(user.UsersRoles)        userRole.UserID = createdUser.ID        userRole.RolesID = rolesID        result = r.Db.WithContext(ctx).Create(&userRole)    }    return createdUser.ToResponse(), result.Error}我想像這樣返回值:user.UserResponse{        ID:        4,        Email:     "[email protected]",        FirstName: "putri",        LastName:  "cantik",        Address:   "bonang",        Roles: []roles.Roles{            {                ID: 1,                Name: "Admin",            },            {                ID: 2,                Name: "Consumer",            },        },    }但是當我創建數據集時,我只會得到如下值:user.UserRespones{        ID:        4,        Email:     "[email protected]",        FirstName: "putri",        LastName:  "cantik",        Address:   "bonang",        Roles:     []roles.Roles(nil),    }
查看完整描述

1 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

據我所知,您已經擁有用戶數據和角色 ID。我想您也只想獲得角色名稱:

err := r.db.Find(&createdUser.Roles, req.RolesID)
// err handling

也就是說,您的類型和名稱有點不清楚。UserRespone(注意拼寫錯誤)可能應該命名為DBUser- 它是否用作響應或其他東西并不重要,它代表用戶的數據庫條目,對吧?

此外,我只能對createdUserand的類型和字段做出假設UsersRoles,所以我可能遺漏了一些東西。

我認為createdUser是類型UserRespone- 但我希望它Roles已經完成(并且您根本不必查詢任何內容)。如果不是,那么您應該為此引入一個新類型,例如RequestUser(與 相對DBUser),它只包含 RoleID 但不包含Role名稱。將請求中的數據、數據庫條目和響應數據壓縮到同一類型中是令人困惑的(而且有點太緊密了,不符合我的口味)。


查看完整回答
反對 回復 2023-03-15
  • 1 回答
  • 0 關注
  • 319 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號