Knex: Débogage toString lors de l'utilisation de Bookshelf

Créé le 30 déc. 2014  ·  3Commentaires  ·  Source: knex/knex

J'utilise bookshelf-> knex-> pg et je dois approfondir certaines des requêtes SQL générées. Je voudrais voir les sorties toString() pour chaque requête qui passe par knex, c'est-à-dire sans $ 1, $ 2, etc.

question

Commentaire le plus utile

Salut et merci pour les réponses rapides et positives. Pour info, j'ai un peu modifié ceci pour corriger une faute de frappe et la rendre copiable et collable:

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

Tous les 3 commentaires

Vous pouvez écouter l'événement de requête de votre instance knex , puis interpoler les liaisons:

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

Est-ce ce que vous recherchez?

Le débogage est assez haut sur la liste des priorités des choses qui nécessitent du travail.

Je travaille actuellement sur le réoutillage de nombreux composants internes de knex & bookshelf pour rendre les choses beaucoup plus simples en mettant l'accent sur le débogage et la génération de requêtes robustes. Devrait voir de nouvelles choses qui rendent cela disponible sans que des correctifs temporaires n'apparaissent dans les prochains mois ou deux,

L'extrait @johanneslumpe partagé devrait certainement aider en attendant

Salut et merci pour les réponses rapides et positives. Pour info, j'ai un peu modifié ceci pour corriger une faute de frappe et la rendre copiable et collable:

  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');
  });
Cette page vous a été utile?
0 / 5 - 0 notes