В моих моделях gorm у меня есть Пользователь и Профиль:
type User struct {
ID int
Username string
Password string `json:"-"`
Profile Profile
}
type Profile struct {
UserID int
Gender string
Places string
//...And many more fields
}
Когда я ищу полное отображение своего профиля, используя:
db.Preload("Profile").Where("id = ?", 1).First(&user)
c.JSON(200, user)
JSON результат, который получит клиентская сторона, совершенно нормальный:
{
"ID": 1,
"Username": {
"String": "",
"Valid": false
},
"Profile": {
"UserID": 1,
"Gender": "men",
"Places": "Home and staying home",
// ...And many more
},
}
Но когда я хочу указать только два поля ID и Username, даже если я не использовал Preload () или Related () Profile, там это все еще пустой набор:
db.Where("id = ?", 1).First(&user)
c.JSON(200, user)
// Result
{
"ID": 1,
"Username": {
"String": "",
"Valid": false
},
//below is redundant in this situation
"Profile": {
"UserID": 0,
"Gender": "",
"Places": "",
// ...And many more 0 or "" fields
},
}
Мой вопрос в том, как игнорировать поля профиля из ответа JSON каждый раз, когда он не загружен? В целях экономии стоимости трансфера