У меня возникают проблемы при сохранении jsonb при запросах на вставку, где Postgres иногда выдает синтаксические ошибки:
Например, при использовании JSON.stringify(data)
такие данные не будут работать:
{
"id": 1234,
"name": "This isn\'t going to insert"
}
И это вставит без проблем:
{
"id": 1234,
"name": "This will insert"
}
Я хотя бы сузил, что ему не нравится какой-то синтаксис в строках (ie: \'
). Есть ли известное дезинфицирующее средство для подготовки JSON таким образом перед сохранением вместо простого использования JSON.stringify(data)
? Я немного новичок в Postgres + Node.js.
Для контекста запрос вставки SQL отформатирован так:
const _getActivityInsertQuery = data => {
const chunks = [];
data.forEach(it => {
chunks.push(`('${it.id}'::bigint, '${JSON.stringify(it)}'::jsonb)`);
});
return (
`INSERT INTO mytable (id, data)\n VALUES ${chunks.join(',\n')}\n` +
`ON CONFLICT (id) DO UPDATE \n` +
`SET data = EXCLUDED.data`
);
};
const response = await pool.query(_getActivityInsertQuery(data));