рдореИрдВ рдмреБрдХрд╢реЗрд▓реНрдлрд╝-> рдХреНрдиреЗрдХреНрд╕-> рдкреАрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП 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 рдХреЛ рдЗрд╕ рдмреАрдЪ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП
рдирдорд╕реНрддреЗ, рдФрд░ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред FYI рдХрд░реЗрдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдХреЙрдкреА-рдФрд░-рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдпрд╛:
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');
});
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдирдорд╕реНрддреЗ, рдФрд░ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред FYI рдХрд░реЗрдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЯрд╛рдЗрдкреЛ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдХреЙрдкреА-рдФрд░-рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдпрд╛: