第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Gorm 創(chuàng)建并返回值 many2many

Gorm 創(chuàng)建并返回值 many2many

Go
烙印99 2023-03-15 14:31:37
我想創(chuàng)建一個數(shù)據(jù),然后返回值,但該值與另一個表相關(guān)。用戶響應(yīng)結(jié)構(gòu)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"`}角色結(jié)構(gòu)type Roles struct {    ID   int `json:"id" gorm:"<-:false;primaryKey"`    Name string}這是一個創(chuàng)建數(shù)據(jù)的函數(shù),我想返回值 [ ]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:     "putri4@gmail.com",        FirstName: "putri",        LastName:  "cantik",        Address:   "bonang",        Roles: []roles.Roles{            {                ID: 1,                Name: "Admin",            },            {                ID: 2,                Name: "Consumer",            },        },    }但是當(dāng)我創(chuàng)建數(shù)據(jù)集時,我只會得到如下值:user.UserRespones{        ID:        4,        Email:     "putri4@gmail.com",        FirstName: "putri",        LastName:  "cantik",        Address:   "bonang",        Roles:     []roles.Roles(nil),    }
查看完整描述

1 回答

?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

據(jù)我所知,您已經(jīng)擁有用戶數(shù)據(jù)和角色 ID。我想您也只想獲得角色名稱:

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

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

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

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


查看完整回答
反對 回復(fù) 2023-03-15
  • 1 回答
  • 0 關(guān)注
  • 330 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號