Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ½ΠΈΠΆΠ½ΡΡ ΠΏΠΎΠ»ΠΊΡ-> knex-> pg, ΠΈ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π³Π»ΡΠ±ΠΆΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ
SQL-Π·Π°ΠΏΡΠΎΡΠ°Ρ
. Π― Ρ
ΠΎΡΠ΅Π» Π±Ρ Π²ΠΈΠ΄Π΅ΡΡ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ toString()
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· knex, Ρ.Π΅. Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ $ 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 ΠΈ bookhelf, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΏΠΎΡΠΎΠΌ Π½Π° ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π±Π΅Π· Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΡ ΡΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ ΠΌΠ΅ΡΡΡ ΠΈΠ»ΠΈ Π΄Π²Π°,
Π’Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, ΡΡΠ°Π³ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΡΡ
ΠΡΠΈΠ²Π΅Ρ ΠΈ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π±ΡΡΡΡΡΠ΅ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ. Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ:
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');
});
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΈΠ²Π΅Ρ ΠΈ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π±ΡΡΡΡΡΠ΅ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ. Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ: