Estoy usando bookshelf-> knex-> pg y necesito profundizar en algunas de las consultas SQL que se están generando. Me gustaría ver los resultados de toString()
para cada consulta que pasa por knex, es decir, sin $ 1, $ 2, etc. ¿Hay alguna manera de habilitar esto sin un parche de mono, o un parche que pueda hacer esto simplemente?
Puede escuchar el evento de consulta de su instancia knex
y luego interpolar los enlaces:
var bindingRegex = /\?/g;
knexInstance.on('query', function (query) {
var params = query.bindings.slice();
var q = query.sql.replace(bindingRegex, function () {
return params.unshift();
});
console.log(new Date().toISOString(), '\n', q, '\n');
});
¿Es esto lo que estás buscando?
La depuración es bastante alta en la lista de prioridades de cosas que necesitan ser mejoradas.
Actualmente estoy trabajando en la remodelación de muchos de los componentes internos de knex & bookshelf para hacer las cosas mucho más simples con un énfasis en la depuración y la generación de consultas robustas. Debería ver algunas cosas nuevas que lo hagan disponible sin que aparezcan parches temporales en el próximo mes o dos,
El fragmento que compartió @johanneslumpe definitivamente debería ayudar mientras tanto
Hola, y gracias por las respuestas rápidas y positivas. Para su información, modifiqué esto un poco para corregir un error tipográfico y hacerlo copiar y pegar:
knexInstance.on('query', function (query) {
var params = query.bindings.slice();
var q = query.sql.replace(/\?/g, function () {
return '\'' + params.shift() + '\'';
});
console.log(new Date().toISOString(), '\n', q, '\n');
});
Comentario más útil
Hola, y gracias por las respuestas rápidas y positivas. Para su información, modifiqué esto un poco para corregir un error tipográfico y hacerlo copiar y pegar: