본문 바로가기

📂 Engineering83

데이터베이스에 중복 생성이 되지 않게 하는 방법은? 문제 상황 기술 면접 중, 동시성 문제와 관련해서 내가 짠 로직으로는 아이디가 중복 생성이 가능해보인다 라는 피드백을 받았다. 코드를 작성할 때는 몰랐지만, 막상 면접에서 보니 그럴만 하다는 생각이 들었다. (해당 코드는 맨 아래에 첨부하겠습니다) 그래서 이걸 어떻게 하면 중복 생성을 막을 수 있을까 여쭤보셨고 난 다음과 같이 말씀드렸다. 음~ 테이블에서 계정명을 기준으로 SELECT하는 부분부터 생성하는 부분까지 하나의 트랜잭션으로 묶어서 관리하면 될 것 같습니다! ㅎㅎ 그런데 SELECT하는 쿼리는 LOCK이 안 걸리니, PK같은 거로 설정하면 어떨까 말씀해주셨다. 그 당시에는 ㅇㅈ. 하고 넘어갔지만 곰곰히 생각해보니 "보통 VARCHAR로 PK를 하나? UNIQUE가 낫지 않나?" 라는 의문이 들었.. 2022. 9. 20.
supertest에서 multipart/form-data로 파일 post하는 법, timeout 에러 해결하기 describe('/api/card에서는 ', () => { /* 명함 생성 테스트 */ test( 'POST /create 성공 시 201', done => { request(app) .post('/api/card/create') .set('Content-Type', 'multipart/form-data') .attach('image', './tests/dummy.png') .field('user_id', '9999') .field('nickname', '테스트닉네임') .expect(201) .end(() => { done(); }); }, TIMELIMIT, ); 위와 같이 헤더에서 Content-Type을 명시하고, 첨부파일-attach, 일반 텍스트-field로 form의 내용을 채울 수 있다... 2022. 7. 24.
JavaScript에서 Map과 Object의 차이 보호되어 있는 글 입니다. 2022. 7. 10.
express 프로젝트 설정하기 - 근데 이제 pre-commit에 eslint와 prettier를 곁들인 0. Requirements nvm이든 뭐든 일단 node가 설치되어있어야 합니다. 저는 nvm use --lts 로 16.15.1을 사용했습니다. 당연히 편집기도 필요합니다.(vscode, vim, ...) 1. express generator로 프로젝트 생성 순서대로 터미널에서 입력합니다. npm install -g express-generator express {님께서 만드실 앱의 이름} --view=pug cd 앱이름 git init 2. .gitignore 생성 및 내용 추가 .gitignore라는 파일을 만들어 아래 내용을 추가하고 저장합니다. node_modules package-lock.json 3. 필요한 패키지 설치 아래 내용을 터미널에서 입력합니다. (한줄이니까 그냥 npm부터 esl.. 2022. 7. 8.