我正在使用bookshelf-> knex-> pg,需要更深入地研究正在生成的一些SQL查询。 我想看到每个通过knex的查询的toString()
输出,即没有任何$ 1,$ 2等。是否有没有猴子补丁或简单的补丁就可以启用此功能的方法?
您可以侦听knex
实例的查询事件,然后插值绑定:
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');
});
这是你想要的?
在需要处理的事情的优先级列表上,调试非常重要。
我目前正在重新整理knex和书架的许多内部组件,以简化调试工作,并着重于生成可靠的查询,从而使事情变得简单得多。 应该会看到一些使此功能可用的新功能,而在下一两个月内不会出现临时补丁,
在此期间,共享的@johanneslumpe片段肯定会有所帮助
嗨,谢谢您的迅速而积极的回应。 仅供参考,我对此进行了一些修改,以纠正输入错误,并使其可复制并粘贴:
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');
});
最有用的评论
嗨,谢谢您的迅速而积极的回应。 仅供参考,我对此进行了一些修改,以纠正输入错误,并使其可复制并粘贴: