我想将某个结构存储到其中具有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结构
*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从架构和固定装置中删除时,一切运行正常。但是由于某种原因,当包含此字段时,程序会出现紧急情况。关于如何weekly_schedule在数据库模式和Go结构中定义字段的任何想法?
weekly_schedule
SQLX有一个类型JSONText的github.com/jmoiron/sqlx/types,会做你需要什么
JSONText
github.com/jmoiron/sqlx/types
JSONText的文档