假设我有一些以这种方式规范化的用户权限表:
这三个表的模型如下所示:
type Role struct {
RoleID string `gorm:"type:varchar(25); primary_key" json:"id"`
Name string `gorm:"type:varchar(50)" json:"name"`
Description string `gorm:"type:text(250)" json:"description"`
CreatedAt string `gorm:"type:timestamp" json:"createdAt"`
Permission []PermissionToRole `gorm:"foreignkey:RoleID; association_foreignkey:RoleID" json:"permissions"`
}
type Permission struct {
PermID string `json:"id" gorm:"column:permission_id; type:varchar(25); primary_key"`
Name string `json:"name" gorm:"type:varchar(50)"`
Description string `json:"description" gorm:"text(250)"`
}
type PermissionToRole struct {
RoleID string `json:"-" gorm:"type:varchar(25); primary_key"`
PermID string `json:"-" gorm:"column:permission_id; type:varchar(25); primary_key"`
Permission Permission `gorm:"foreignkey:PermID; association_foreignkey:PermID" json:"permissions"`
}
但是这种模型的结果不是我想要的那样。我希望创建一个Permission数组,但这是它的外观(当打印到JSON时):
"permissions": [
{
"permissions": {
"id": "create_user",
"name": "Create user account",
"description": "Give the permission to create a user account"
}
}
]
我想要的是:
"permissions": [
{
"id": "create_user",
"name": "Create user account",
"description": "Give the permission to create a user account"
}
]
有人对此有答案吗?需要帮助。谢谢。
[此处,Role.Permission
是PermissionToRole
类型的切片。您可以直接使用Permission
类型的切片,而不是使用PermissionToRole
获得预期的输出。
type Role struct {
RoleID string `gorm:"type:varchar(25); primary_key" json:"id"`
Name string `gorm:"type:varchar(50)" json:"name"`
Description string `gorm:"type:text(250)" json:"description"`
CreatedAt string `gorm:"type:timestamp" json:"createdAt"`
Permission []Permission `json:"permissions"`
}
type Permission struct {
PermID string `json:"id" gorm:"column:permission_id; type:varchar(25); primary_key"`
Name string `json:"name" gorm:"type:varchar(50)"`
Description string `json:"description" gorm:"text(250)"`
}
至JSON:
"permissions": [
{
"id": "create_user",
"name": "Create user account",
"description": "Give the permission to create a user account"
}
]