Knex: Bookshelf ์‚ฌ์šฉ์‹œ toString ๋””๋ฒ„๊น…

์— ๋งŒ๋“  2014๋…„ 12์›” 30์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: knex/knex

๋‚˜๋Š” bookshelf-> knex-> pg๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ƒ์„ฑ๋˜๋Š” SQL ์ฟผ๋ฆฌ ์ค‘ ์ผ๋ถ€๋ฅผ ๋” ์ž์„ธํžˆ ์กฐ์‚ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. knex๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด toString() ์ถœ๋ ฅ์„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ฆ‰, $ 1, $ 2 ๋“ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ์›์ˆญ์ด ํŒจ์น˜์—†์ด์ด๋ฅผ ํ™œ์„ฑํ™” ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ฐ„๋‹จํžˆ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ํŒจ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”, ๋น ๋ฅด๊ณ  ๊ธ์ •์  ์ธ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์˜คํƒ€๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ์•ฝ๊ฐ„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  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 ๋ฐ 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');
  });
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

tjwebb picture tjwebb  ยท  3์ฝ”๋ฉ˜ํŠธ

ghost picture ghost  ยท  3์ฝ”๋ฉ˜ํŠธ

olaferlandsen picture olaferlandsen  ยท  3์ฝ”๋ฉ˜ํŠธ

fsebbah picture fsebbah  ยท  3์ฝ”๋ฉ˜ํŠธ

npow picture npow  ยท  3์ฝ”๋ฉ˜ํŠธ