Программа Basi c NodeJS / PostgreSQL выдает ошибку: в сообщении связывания указан 1 параметр, но для подготовленного оператора "" требуется 0 - PullRequest
0 голосов
/ 12 марта 2020

Я пишу код node.js, который должен подключиться к базе данных Postgres и выполнить запрос.

Проблема заключается в том, что при выполнении сценария возникает ошибка: bind message supplies 1 parameters, but prepared statement "" requires 0.

Я не понимаю, что происходит. Может ли кто-нибудь помочь мне?

Полный сценарий:

const { Client } = require('pg');

let connectionString = 'postgresql://ezert:<myPassword>@localhost:5432/mydb';

const client = new Client({
    connectionString: connectionString
});

client.connect();

client.query('select * from my_table', [1], function (err, result) {

    if (err) {

        console.log('[ERROR]:\n' + err);
        return;

    }

    console.log('[RESULT]:\n' + result.rows);
    return;

});

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

'select * from my_table', [1]

Ваш запрос не принимает никаких параметров (в тексте запроса нет $ 1, $ 2, et c. Заполнителей. ), но пытаются вставить в него один параметр, содержащий 1.

Если ваш запрос не имеет параметров, не указывайте его.

0 голосов
/ 12 марта 2020

Из документации

Функция запроса получает дополнительные параметры

client.query(
  text: string,
  values?: Array<mixed>,
  callback: (err: Error, result: Result) => void
) => void

Ваш запрос select * from my_table не получает никаких параметров, но вы поставка одного [ 1 ] .

Вариант 1: Удалить параметр

client.query('select * from my_table', function (err, result) {
   // your code here
});

Вариант 2: Использовать параметр в вашем запрос

Например:

client.query('select * from my_table where columnName=$1', [1], function (err, result) {
   // your code here
});

(для columnName должен быть указан столбец my_table)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...