Knex: рдЬрдм рдкреБрд╕реНрддрд╛рдХ рддрдЦреНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рджрд┐рд╕ре░ 2014  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: knex/knex

рдореИрдВ рдмреБрдХрд╢реЗрд▓реНрдлрд╝-> рдХреНрдиреЗрдХреНрд╕-> рдкреАрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП toString() рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА $ 1, $ 2 рдЖрджрд┐ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдмрдВрджрд░ рдХреЗ рдкреИрдЪ, рдпрд╛ рдкреИрдЪ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдмрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдирдорд╕реНрддреЗ, рдФрд░ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред 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');
  });

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдк рдЕрдкрдиреЗ 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');
  });
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

PaulOlteanu picture PaulOlteanu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

koskimas picture koskimas  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

marianomerlo picture marianomerlo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fsebbah picture fsebbah  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arconus picture arconus  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ