Javascript

[JS] 자바스크립트로 유니크한 ID 생성하기

SeanK 2022. 4. 17. 15:37

이번 토이 프로젝트에서는 로그인되지 않은 게스트 유저도 자유롭게 단어장을 생성하여 사용하다가, 이후 회원가입을 하면 로컬에 저장되어 있는 단어장을 데이터베이스에 업데이트하는 신선한 시도를 해보려 한다. 

 

토큰 저장용으로만 사용하던 로컬 스토리지를 게스트 유저에 한해서만 활용한다니 재미있는 작업이 될 듯하다. 

 

그리고 또 다른 묘미는 필자가 웹 어플리케이션을 제작하고 다른 팀원이 모바일 어플을 제작하는 하나의 데이터베이스를 공유하는 두 개의 플랫폼 어플을 개발한다는 점이다. 

 

그래서 여러 의논을 진행중에 있는데 한 가지 의논 거리는 단어장 데이터의 ID를 어떻게 생성할 것인가? 였다. 

 

유저가 웹과 모바일 모든곳에서 단어장을 생성할 수 있기 때문에 혹여나 로컬 스토리지에 저장되어 있는 단어장의 ID가 중복된다면, 이는 대참사로 이어질 것이다. ㄷㄷ 그래서 오늘은 유니크한 ID를 생성하는 방법에 대해 조사해 보았는데 잘 정리된 블로그가 있어 번역해 옮겨본다. 

How to Generate Unique ID in JavaScript

자바스크립트에서는 유니크한 Id를 생성하는 방법이 여러개 있다. 이는 리스트를 효율적으로 렌더링 한다던가 다큐먼트나 레코드를 데이터베이스에서 분류하는 등 다양한 케이스에서 도움이 될 수 있다. 
 

Using UUID

UUID는 univerally unique identifier의 줄임말로 특정한 무언가를 유일하게 특정할 수 있는 번호를 뜻한다. 대략적인 개념은 우리가 번호를 생성할 때마다 UUID는 전 세계적으로 유일한 누구도 똑같이 생성할 수 없는 번호를 생성한다.

 

필자는 유일한 ID를 생성할 때 이 방법을 선호한다. 자바스크립트에서 uuid라는 UUID를 생성하는 라이브러리를 사용할 수 있다. 

$ npm install uuid
 
const uuidv4 = require("uuid/v4")

uuidv4()

UUID는 여러 버전이 있는데, 유니크한 Id를 생성하는데 적합한 버전은 버전 4이다. 그리고 해당 버전으로 번호를 생성하면 대락 아래와 같이 생성된다. 

1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed
 

Using Math.random

Math.random은 난수를 생성하는 자바스크립트 내장 함수다. 매번 실행할 때 마다 다른 난수를 반환한다.

Math.floor(Math.random() * 100)

Math.random은 소숫점 수를 반환하기 때문에 숫자를 반올림할 필요가 있다. 100을 곱하면 0에서 99의 숫자를 랜덤 하게 반환한다. 더 큰 숫자를 원하면 늘릴 수도 있다. 

 

Using Date.now

Date.now는 또 다른 자바스크립트 내장함수인데 1970년 1월 1일부터 밀리세컨드 단위로 흐른 시간을 계산해 반환한다. 

Date.now()