Невозможно предварительно загрузить пункт.
Я использую GORM в сочетании с Fiber. При запросе всех пользователей с предварительно загруженными
clause.Associations
Я получаю следующую ошибку:
can't preload field @@@as@@@ for entities.User
Что это значит? Без
preload
из
clause.Associations
он работает нормально, но не показывает однозначных ассоциаций.
func UsersGetAll(c *fiber.Ctx) error {
db := database.DBConn
users := []entities.User{}
records := db.Preload(clause.Associations).Find(&users)
if records.Error != nil {
log.Println(records.Error)
return c.Status(500).SendString(records.Error.Error())
}
return c.JSON(records.Value)
}
1 ответ
Похоже, проблема с тегами gorm: я предполагаю, что структура выглядит примерно так:
type Address struct {
ID int `gorm:"column:id;primaryKey"`
}
type User struct {
Name string `gorm:"column:name"`
Age string `gorm:"column:age"`
Address Address `gorm:"references:ID"`
}
И код:
user:=User{}
if err:=db.Preload("Address").Find(&user).Error {
panic(err)
}
Я думаю, вам также следует взглянуть на это: Ошибка отношения Горма: необходимо определить допустимый внешний ключ для отношений или необходимо реализовать интерфейс Valuer / Scanner