Я думаю, проблема в том, как вы вызываете client.query.Я не знаком с методом, который вы используете, но вот как я обычно его использую:
let params = [ "param1", ["param2"] ]; /* array of params */
let query = "select someFunction($1::text, $2::text[])";
client.query( query, params, function (error, result) {
if (error) { /* handle */ }
else { /* do work */ }
});
В вашем случае предполагается, что datajson предназначен для массива строк:
let params = [ datajson ];
let query = "select setProduct($1::text[])";
/* note in your case if you had intended to send in a json string as a string then instead:
let query = select setProduct($1::text);
or if you had intended to send in as json:
let query = select setProduct($1::json);
*/
client.query (query, params, function(error, result){
if (error) { /* handle it */ }
else {
console.log(result);
}
});
Как вы можете видеть, params должен быть массивом, на который в строке выбора ссылается его порядковый номер: $ 1, $ 2 и т. Д. *