Knex: depuração toString ao usar Bookshelf

Criado em 30 dez. 2014  ·  3Comentários  ·  Fonte: knex/knex

Estou usando bookshelf-> knex-> pg e preciso me aprofundar em algumas das consultas SQL que estão sendo geradas. Eu gostaria de ver as saídas toString() para cada consulta que passa pelo knex, ou seja, sem $ 1, $ 2 etc. Existe uma maneira de habilitar isso sem um patch monkey ou um patch que pode fazer isso de forma simples?

question

Comentários muito úteis

Olá, e obrigado pelas respostas rápidas e positivas. Para sua informação, modifiquei um pouco para corrigir um erro de digitação e torná-lo copiável e colável:

  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 comentários

Você pode ouvir o evento de consulta de sua instância knex e, em seguida, interpolar as ligações:

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

É isso que você está procurando?

A depuração está no topo da lista de prioridades das coisas que precisam ser trabalhadas.

Atualmente, estou trabalhando na reformulação de muitos componentes internos do knex & bookshelf para tornar as coisas muito mais simples, com ênfase na depuração e na geração robusta de consultas. Deve ver algumas coisas novas que tornam isso disponível sem patches temporários aparecendo nos próximos um ou dois meses,

O snippet @johanneslumpe compartilhado definitivamente deve ajudar nesse meio tempo

Olá, e obrigado pelas respostas rápidas e positivas. Para sua informação, modifiquei um pouco para corrigir um erro de digitação e torná-lo copiável e colável:

  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');
  });
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

marianomerlo picture marianomerlo  ·  3Comentários

mattgrande picture mattgrande  ·  3Comentários

arconus picture arconus  ·  3Comentários

lanceschi picture lanceschi  ·  3Comentários

olaferlandsen picture olaferlandsen  ·  3Comentários