我想将某个结构存储到我的数据库中,该结构中具有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驱动程序,并且不会执行以下操作。相反,它惊慌地说有一个零指针。 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时,一切运行正常。但是由于某种原因,当包含此字段时,程序会出现紧急情况。关于如何在数据库架构和Go结构中定义weekly_schedule字段的任何想法?

最佳答案

sqlx在JSONText中具有类型github.com/jmoiron/sqlx/types,可以完成您需要的操作

JSONt_a用于JSONText

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

10-16 09:27