我正在try 从我的数据库加载队列项目.我已经创建了一个API终结点,但我无法获取队列项预加载的数据.相反,整个"data"对象都是空值.

处理程序:

func QueueItemHandler(w http.ResponseWriter, r *http.Request) {
    var queueItems QueueItem
    var builder = database.Model(QueueItem{})

    var queryError = builder.
        Preload("Status").
        Preload("Data").
        Find(&queueItems).
        Error

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(queueItems)
}

下面是我的GORM模型的设置:

type QueueItemStatus struct {
    ID          int64  `json:"id" gorm:"primary_key"`
    Name        string `json:"name"`
    Description string `json:"description"`
}

type QueueItemData struct {
    ID            int64  `json:"id" gorm:"primary_key"`
    QueueItemId   int64  `json:"queue_item_id"`
    ScreenshotUrl string `json:"screenshot_url"`
}

type QueueItem struct {
    ID            int64                  `json:"id" gorm:"primary_key"`
    SourceUrl     string                 `json:"source_url"`
    OriginId      int64                  `json:"origin_id"`
    StatusId      int64                  `json:"status_id"`
    Status        QueueItemStatus `json:"status"`
    Data          QueueItemData   `json:"data" gorm:"foreignKey:id,references:queue_item_id"`
    CreatedAt     time.Time              `json:"created_at"`
}

我在想,也许我把模型设置得指向了错误的列,如果有的话?

推荐答案

试试换这个

Data       QueueItemData    `json:"data" gorm:"foreignKey:QueueItemId;references:ID"`

Go相关问答推荐

难以为多个平台添加Go Bazel构建选项

带有一个新变量的Go冒号等于运算符

需要类型[]*structpb.Value(GCP Golang客户端库;aiPlatform)

通过代理从golang连接到ftp

为什么要立即调用内联函数,而不仅仅是调用其包含的函数?

go-chi: 接受带有反斜杠的 url 路径参数

如何使用 AWS sdk 在 Go 中正确解组 PartiQL 查询的结果?

Go Template 动态获取变量

Golang crypto/rand 线程安全吗?

甚至用天真的洗牌分配?

从Go中的随机日期开始以天为单位获取时间

Wire google Inject with multi return from provider 函数

如何在测试中使用自定义标志(使用`testify/suite`)

如何 Select 前 N 个元素 Gin-Gorm

将接口方法的参数限制为几个允许的 struct ?

Go AST:获取所有 struct

在 Go 中将指针传递给函数的正确方法是什么,以便我可以读取和/或修改指针表示的值?

HCL 解码:具有多个标签的块

是否存在一个Go泛型类型约束,该约束捕获了将类型用作映射中的键的能力?

有没有办法停止long blocking 函数?