[英]How do I convert a javascript object to structured jsonb in Postgres?
如果我的应用程序层中有一个像这样的普通js
对象:
{ name: 'amit', age: 44, likes: ['some', 'things']}
我只想在它上面做一个 JSON.stringify 来得到:
"{"name":"amit","age":44,"likes":["some","things"]}"
但我想在我的 postgres db 中的 sql 中执行此操作,该数据库有一个jsonb
列。
我试过使用像to_json
这样的to_json
(失败),也试过像这样投射这个对象:
SELECT '{ name: 'amit', age: 44, likes: ['some', 'things']}'::jsonb
但这给了我一个错误:
ERROR: ERROR: syntax error at or near "', age: 44, likes: ['"
LINE 8: SELECT '{ name: 'amit', age: 44, likes: ['some', 'things']}'.
如何将此对象转换为可以存储在表的jsonb
列中的结构化 jsonb 对象?
你有错误的语法:)。 Postgres 不是 JavaScript。 Postgres json 语法更接近 Python 的字典(需要引用键)。 对键和字符串值使用双引号而不是单引号。 然后使用::jsonb
将其转换为正确的 jsonb 格式。
JSON.stringify为此目的很好,我不知道为什么你的选择是错误的。
您的选择应该是:
SELECT '{ "name": "amit", "age": 44, "likes": ["some", "things"]}'::jsonb;
console.log(JSON.stringify({ name: 'amit', age: 44, likes: ['some', 'things']}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.