gpt4 book ai didi

sql - 将 Golang JSON 存储到 Postgresql 中

转载 作者:IT老高 更新时间:2023-10-28 13:06:31 32 4
gpt4 key购买 nike

我想将某个结构存储到我的数据库中,其中包含一个 JSON 字段。

type Comp struct {
CompId int64 `db:"comp_id" json:"comp_id"`
StartDate time.Time `db:"start_date" json:"start_date"`
EndDate time.Time `db:"end_date" json:"end_date"`
WeeklySchedule json.RawMessage `db:"weekly_schedule" json:"weekly_schedule"`
}

表的架构是:

CREATE TABLE IF NOT EXISTS Tr.Comp(
comp_id SERIAL,
start_date timestamp NOT NULL,
end_date timestamp NOT NULL,
weekly_schedule json NOT NULL,
PRIMARY KEY (comp_id)
);

我在我的项目中使用 sqlx 和 lib/pq 驱动程序,以下将不会执行。相反,它会 panic 地说有一个 nil 指针。 DB 是一个全局 *sqlx.DB 结构

    tx := DB.MustBegin()

compFixture := Comp{
StartDate: time.Now(),
EndDate: time.Now().AddDate(1, 0, 0),
WeeklySchedule: json.RawMessage([]byte("{}")),
}
_, err = tx.NamedExec(
`INSERT INTO
Tr.Comp(comp_id,
start_date, end_date, weekly_schedule)
VALUES (DEFAULT,
:start_date, :end_date, :weekly_schedule)
RETURNING comp_id;`, compFixture)
if err != nil {
t.Fatal("Error creating fixture.", err)
}

当我从架构和固定装置中删除 weekly_schedule 时,一切正常。但是由于某种原因,当包含此字段时,程序会出现 panic 。关于我应该如何在我的数据库模式和 Go 结构中定义 weekly_schedule 字段的任何想法?

最佳答案

sqlx 在 github.com/jmoiron/sqlx/types 中有一个类型 JSONText 可以满足您的需要

doc对于 JSONText

关于sql - 将 Golang JSON 存储到 Postgresql 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25758138/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com