Можно ли получить оператор SQL вместе с ошибкой, возвращаемой node-postgres?

Я получаю ошибки, которые выглядят следующим образом от node-postgres (при вызове его метода client.query):

{ [Error: syntax error at or near "as"]
 severity: 'ERROR',
 code: '42601',
 position: '60',
 file: 'scan.l',
 line: '1044',
 routine: 'scanner_yyerror' } }

Если бы я мог видеть некорректный SQL рядом с сообщением об ошибке, это значительно упростило бы отладку. Можно ли его как-то получить?

Я понимаю, что могу реализовать это вручную (обернуть client.query и т. д.), но меня интересует, можно ли заставить сам node-postgres предоставить SQL.


person Alex Korban    schedule 07.05.2014    source источник


Ответы (1)


Глядя на исходный код (https://github.com/brianc/node-postgres/blob/master/lib/client.js#L331), метод query возвращает объект Query. Итак, вы должны быть в состоянии сделать что-то вроде этого:

var query = client.query('SELECT $1::int AS number', ['1'], function(err, result) {
  if (err) {
    var sql = query.text;
  }
}

(при условии, что ваша функция обратного вызова находится в той же области, что и query).

Отказ от ответственности: я никогда не использовал node-postgres.

person Ivan Vergiliev    schedule 10.05.2014
comment
Похоже, это мой лучший и единственный вариант. Спасибо. На самом деле это query.text для SQL и query.values для получения значений параметров (без .config). - person Alex Korban; 11.05.2014
comment
Исправлено. На самом деле я не мог проверить это, так как у меня не было работающего сервера. - person Ivan Vergiliev; 11.05.2014