Knex: Depuración de toString al usar Bookshelf

Creado en 30 dic. 2014  ·  3Comentarios  ·  Fuente: knex/knex

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?

question

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:

  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');
  });

Todos 3 comentarios

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');
  });
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

saurabhghewari picture saurabhghewari  ·  3Comentarios

legomind picture legomind  ·  3Comentarios

fsebbah picture fsebbah  ·  3Comentarios

arconus picture arconus  ·  3Comentarios

nklhrstv picture nklhrstv  ·  3Comentarios