2017-04-03 5 views
0

Ich habe eine Tabelle, wo das data Feld JSONB-Typ hat und unter vielen anderen Daten habe ich einen notes Schlüssel innerhalb der data Json-Wert, wo ich ein Array von Notizen speichern.Postgres ersetzen ein Array in einem JSONB-Feld

Jede Notiz hat (mindestens) zwei Felder: title und content.

Manchmal muss ich die ganze Liste der Notizen durch eine andere Liste ersetzen, aber keinen Einfluss auf andere Felder in meinem Json-Datensatz.

habe ich versucht, so etwas wie diese: UPDATE mytable SET data = jsonb_set("data", '{notes}', '[{ "title": "foo1" "content": "bar"'}, { "title": "foo2" "content": "bar2"}]', true) WHERE id = ?

Und ich bekomme eine Ausnahme (durch einen js-Wrapper) error: invalid input syntax for type json

Wie soll ich die richtig jsonb_set Funktion?

Antwort

0

Sie haben ein Streu Apostroph und fehlende Kommas in Ihrem JSON Nutzlast

Statt

[{ "title": "foo1" "content": "bar"'}, { "title": "foo2" "content": "bar2"}] 
       ^   ^    ^

es eher

aussehen sollte
[{ "title": "foo1", "content": "bar"}, { "title": "foo2", "content": "bar2"}] 
+0

Omg, danke. Ich bin heute sehr müde :) – geujv

+0

Kein Problem. Froh, dass es geholfen hat :) – peterm