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