【发布时间】:2021-02-26 14:45:36
【问题描述】:
我在 Javascript 中有一个对象数组:
const testArray = [{name: 'John', date: '2017-03-15'}, {name: 'Bob', date: '2018-04-29'}];
在 nodejs 中,我正在运行一个 UPDATE 语句,该语句将发送到我的 Postgres 数据库。我需要将上述对象数组插入到 Postgres 中的 JSON 数组列中。它需要如下所示:
UPDATE persons
SET info = (array['{"name": "John", "date": "2017-03-15"}', '{"name": "John", "date": "2018-04-29"}']::json[])
WHERE id = 1;
问题是我无法让它看起来像那样。当我尝试在 nodejs 中执行以下操作时:
UPDATE persons
SET info = (array[ ${ testArray } ]::json[])
WHERE id = 1;
它在运行时最终看起来像这样:
UPDATE persons
SET info = (array[[object Object],[object Object]]::json[])
WHERE id = 1;
如果我尝试像这样使用JSON.stringify():
UPDATE persons
SET info = (array[ ${JSON.stringify(testArray) } ]::json[])
WHERE id = 1;
运行时是这样的:
UPDATE persons
SET info = (array[{"name": "John", "date": "2017-03-15"}, {"name": "John", "date": "2018-04-29"}]::json[])
WHERE id = 1;
哪个更接近 - 它只是缺少需要围绕每个对象的单引号。
如何正确格式化 nodejs 中的数组以便 Postgres 接受它?
【问题讨论】:
-
您是否尝试过使用
JSON.stringify? -
是的,我做到了,但它仍然不起作用(尽管它更接近正确)。查看我的编辑结果。
-
您使用的是哪个 postgres 客户端库?
-
我正在使用 node-postgres
标签: javascript sql node.js postgresql