Belirli bir yapıyı veritabanım içinde JSON alanı olan bir veritabanında depolamak istiyorum.Golang JSON'u Postgresql'e Kaydetme
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"`
}
tablo için şema geçerli: Projemde sqlx ve pq/lib sürücüyü kullanıyorum ve şu yürütmez
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)
);
. Bunun yerine bir nil işaretçisi olduğunu söyleyen panik. Ben şemadan weekly_schedule
kaldırıp fikstürü şeyin yolunda çalıştırdığınızda DB küresel *sqlx.DB
yapı
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)
}
olduğunu. Ama bir sebepten dolayı, bu alan ne zaman dahil olursa, program panik. Hem DB şema hem de Git yapısında weekly_schedule
alanını nasıl tanımlamalıyım konusunda bir fikrim var mı?
evet için
doc gerekenleri yapacağız
github.com/jmoiron/sqlx/types
bir türJSONText
sahiptir. Bu tam olarak aradığım şey. Teşekkürler – moesefkısa bir süre önce 'JSONText' olarak yeniden adlandırıldı. Https://github.com/jmoiron/sqlx/commit/4301d72cf9192e9d0a830370e31323dce943e005 –
@HarryMoreno Cevabımı güncelledim. Bana bildirdiğiniz için teşekkürler. – jmaloney