๋๋ 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 ๋ฐ bookhelf์ ๋ง์ ๋ด๋ถ๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ์์ ์ํ๊ณ ์์ต๋๋ค. ๋ค์ ๋ฌ ๋๋ ๋ ๋ฌ ์์ ์์ ํจ์น๊ฐ ํ์๋์ง ์๊ณ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋กํ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ํ์ธํด์ผํฉ๋๋ค.
@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');
});
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์, ๋น ๋ฅด๊ณ ๊ธ์ ์ ์ธ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ฐธ๊ณ ๋ก ์คํ๋ฅผ ์์ ํ๊ณ ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ์ ์ ์๋๋ก ์ฝ๊ฐ ์์ ํ์ต๋๋ค.