Knex: UUID ๋ฐ MD5 ์ƒ์„ฑ

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

postgresql์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด uuid ๋˜๋Š” md5 random์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•, ์˜ˆ:

screen shot 2016-06-12 at 5 10 36 pm

ํ•˜์ง€๋งŒ 'knex.raw('uuid_generate_v4()')'๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ๋•Œ ์ž„์˜์˜ ํ•ด์‹œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ž๋™์œผ๋กœ ์ €์žฅํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋˜ํ•œ uuid-v4๋Š” ์ •์ ์ด๋ฉฐ ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์œผ๋กœ ์ธํ•ด ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

screen shot 2016-06-12 at 5 23 16 pm

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์†Œ์œ ๋กœ ์ธํ•ด ๋…ธ๋“œ๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์œ ์ผํ•œ ๋„์›€์€ Google๊ณผ github์ž…๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

knex.raw('create extension if not exists "uuid-ossp"')

๊ทธ๋Ÿฌ๋ฉด ๋‹น์‹ ์€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

table.string('hash').defaultTo(knex.raw('uuid_generate_v4()'))

down ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์žŠ์ง€ ๋งˆ์„ธ์š”.

knex.raw('drop extension if exists "uuid-ossp"')

ํŽธ์ง‘: pg๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ž์—ด ๋Œ€์‹  uuid ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:

await knex.schema.createTable('Users', t => {
  t.uuid('id').defaultTo(knex.raw('uuid_generate_v4()'))
  // ...
})

๋ชจ๋“  5 ๋Œ“๊ธ€

์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ

ํ•˜์ง€๋งŒ 'knex.raw('uuid_generate_v4()')'

์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ผ๋ฐ˜ sql wirhout knex์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ postgrsql๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

๋˜ํ•œ DEBUG= knex:* evironment ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์–ป์œผ์‹ญ์‹œ์˜ค.

@anzileiro , ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์—์„œ uuis-v4 ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋˜์ง€๋งŒ, ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒˆ ๋ชจ๋ธ์„ ์ €์žฅํ•˜๊ธฐ ์ „์— ๋ชจ๋ธ์—์„œ hash uuid() ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ €์žฅ

ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

knex.raw('create extension if not exists "uuid-ossp"')

๊ทธ๋Ÿฌ๋ฉด ๋‹น์‹ ์€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

table.string('hash').defaultTo(knex.raw('uuid_generate_v4()'))

down ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์žŠ์ง€ ๋งˆ์„ธ์š”.

knex.raw('drop extension if exists "uuid-ossp"')

ํŽธ์ง‘: pg๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ž์—ด ๋Œ€์‹  uuid ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:

await knex.schema.createTable('Users', t => {
  t.uuid('id').defaultTo(knex.raw('uuid_generate_v4()'))
  // ...
})

๊ฐ์‚ฌ ํ•ฉ๋‹ˆ๋‹ค @fl0w , ์ผ€์ด์Šค ์ข…๋ฃŒ โ˜บ๏ธ

๊ณ ๋งˆ์›Œ ์–˜๋“ค์•„!

๐Ÿ‘

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰