我在Javascript中有一个对象数组:
const testArray = [{name: 'John', date: '2017-03-15'}, {name: 'Bob', date: '2018-04-29'}];在nodejs中,我正在运行一条UPDATE语句,该语句将发送到我的Postgres DB。我需要将上面的对象数组插入到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接受它?
发布于 2021-02-26 14:45:37
好吧,我想通了。首先对对象数组执行以下操作:
const formatArray = finalArray.map(object => `'${JSON.stringify(object)}'`);现在你可以这样做了:
UPDATE persons
SET info = (array[ ${ formatArray } ]::json[])
WHERE id = 1;https://stackoverflow.com/questions/66381025
复制相似问题