Невозможно предварительно загрузить пункт.

Я использую 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

Другие вопросы по тегам