You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Postgres JSON type doesn't like buffer values #600
I am trying to get orm setup on an existing database that leverages JSON columns. It looks like the object type is saving to hexadecimal values. However, Postgres 9.3 doesn't like this. Can we remove this buffer escaping (prob not since we have #378) or add a new type called json which doesn't encode into hex (a la #381)?
$ createdb buffer-test
$ psql buffer-test
psql (9.3.5)
Type "help"for help.
buffer-test=# CREATE TABLE items (item json);
CREATE TABLE
buffer-test=# INSERT INTO items (item) VALUES ('{}');
INSERT 0 1
buffer-test=# INSERT INTO items (item) VALUES ('\x7b7d');
ERROR: invalid input syntax fortype json
LINE 1: INSERT INTO items (item) VALUES ('\x7b7d');
^
DETAIL: Token "\" is invalid.CONTEXT: JSON data, line 1: \...
I have added the datatype via defineType and it looks like it's working great:
// Add in the JSON data type (`object` works with binary/string columns)// https://github.com/dresende/node-orm2/wiki/Model-Properties#custom-typesdb.defineType('json',{datastoreType: function(prop){return'JSON';},// https://github.com/dresende/node-orm2/blob/v2.1.20/lib/Drivers/DML/postgres.js#L247-L256valueToProperty: function(value,prop){if(typeofvalue!=='object'){try{value=JSON.parse(value);}catch(err){value=null;}}returnvalue;},// https://github.com/dresende/node-orm2/blob/v2.1.20/lib/Drivers/DML/postgres.js#L317-L321propertyToValue: function(value,prop){if(value!==null){value=JSON.stringify(value);}returnvalue;}});
Activity
twolfson commentedon Jan 9, 2015
I have added the datatype via
defineTypeand it looks like it's working great: