일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JWT
- OSI7계층
- westagram
- typescript
- status code
- django westagram
- 스코프
- bcrypt
- wecode
- CORS
- on_delete
- 호이스팅
- 자바스크립트
- 트랜잭션
- 실행 컨텍스트
- nodeJS
- rebase
- pm2
- crud2
- Jest
- TypeError: this.boardRepository.createBoard is not a function
- javascript
- manytomanyfield
- 프로미스
- 노드
- Django
- node
- docker
- 장고초기세팅
- async/await
- Today
- Total
목록프로젝트/프리온보딩 (21)
될때까지
지난 포스팅에 이어서 작성합니다 ➡️ 프리온보딩 DAY1 ((과제1)) 프리온보딩 DAY 1 # 1 : URL 생성 특정 회원에 대한 측정 기록과 측정 데이터를 생성하는 기능을 만들고 있다. 처음 생각했던 URL은 /users/:userId/measurement-data 였다. 하지만 index.js에서 라우팅을 할 때 가운데에 변수값 i-c-a-n-d-o.tistory.com # 1 : URL 생성 내가 맡은 기능은 /measurement-data/user/:userId 처럼 작성하는 게 RESTful하다고 의견을 모아서 이처럼 진행한다. # 2 : 트랜잭션 처리 측정 기록 및 측정 데이터 업로드 및 삭제 시 트랜잭션이 요구되는데 mysql에서 처리할 수도 있고 CASCADE옵션으로 처리할 수도 있다...
# 다시 팀 프로젝트 시작 💪 위코드에서는 모든 과정이 대면으로 진행되었다. 프로젝트 초기 셋팅부터 ERD, 팀장 정하기, 기능 나누기, 의견 조율 등 정해야할 게 많지만 대면하고 있으니까 즉각적인 피드백이 좋았는데 프리온보딩은 전부 온라인으로 진행되서 그 점이 처음에 적응하기 어려웠다. 테이블 생성도 raw query로 작성했는데 못도와주고 팀원들이 작성하는 코드들을 눈으로만 따라갔던 점이 미안한다. 장고에서는 ORM으로 딱 생성했지, 또 mysql 워크밴치에서 코드없이 클릭으로 생성했어가지고 도와줄 수가 없었다. 해당 부분 꼭 숙지해서 2차때는 내가 타이핑하리!! # 담당 기능 특정 회원 측정 기록 생성 및 측정 데이터 생성(트랜잭션 사용) 특정 회원 측정 기록들 조회 # 1 : URL 생성 먼저 ..
어허 테스트코드 만만치않아..?! 로그인 성공 시 토큰을 보내준다. 해당 기능을 확인하는 테스트 코드를 작성하다가 맞딱드린 문제. 토큰을 추출까진 했는데..? 예측하기론 뭔가 JSON 파싱? 인코딩? 그런 게 안된 것 같은데 JSON.parse를 중간에 추가해도 안되고 계속 undefined라고 뜬다 도대체 왜그러는거야 구글링, jest공식사이트 모두 살펴봤지만 나와 같은 상황이 없다.. 이것 저것 다른 메소드를 적용해봐도 계속 뜨는 빨간색 에러.. 뭘까 어떻게해야할까 스택오버플로우에 물어봐야겠드아.. 답변달아주세요 🙏🙏 [2022.10.1 토요일] 아무리 생각해도 뭔가 JSON이 string으로 전환이 안된 것 같았다. 그래서 파싱코드를 추가해봤다. token이라는 변수에 그럼 string형태로 {"t..
Unit Test 용어 TestCase : Unittest Framework의 테스트 조직의 기본 단위 Fixture : 테스트를 진행할 때 필요한 테스트용 데이터 혹은 설정 등을 이야기한다. 주로 테스트가 실행되기 전이나 후에 생긴다. Assertion : Unittest에서 테스트하는 부분이 제대로 됐는지를 확인하는 부분이다. 자바스크립트 테스트 프레임워크 : jest, enzyme, mocha 1. 먼저 server.js와 app.js 분리하기 테스트코드를 만들 때 서버는 필요없고 앱만 필요하다. 앱의 routers나 미들웨어 관련 코드는 server에 남겨두고 app을 리턴하는 createApp함수만 app에 생성해주자. 테스트 단계에서는 테스트용 request를 활용하기 때문에 서버를 구동시킬 ..
🔥 관심사의 분리와 레이어드 패턴 정리 포스팅 참고 🔥 레이어드의 의존성 순서 app -> router -> controller -> service -> models 순으로 갈수록 데이터베이스의 접근에 가까워진다. 각 파일에서 export한 모듈들을 어떤 파일에서 require해서 사용하고 있는 지 흐름을 읽어보면 상위에서 하위 레이어로만 의존하는 걸 알 수 있다. app.js : express app으로 서버를 생성한다. express app 인스턴스를 생성하고 필요한 미들웨어를 붙이는 로직이 들어간다. routes : 라우팅 로직 controllers : http 요청에 따른 에러 핸들링 및 서비스 로직에서 데이터를 받아와 응답으로 내보낸다. services : 컨트롤러에서 넘겨받은 인자로 다양한 ..
Object.entries() : [키, 값] 쌍의 배열을 반환 => [["key1", "value1"], ["key2", "value2"]] Object.entries().forEach() : 배열 안의 요소 하나하나씩을 돌겠다 =>["key1", "value1"], ["key2", "value2"] app.post('/login', async (req, res) => { // PART 1 : request body check const {email, password} = req.body; const hasKey = { email : false, password : false}; const requireKey = Object.keys(hasKey); // req.body = { // email : "o..
배열에 담아 반환되는 쿼리의 실행 결과, 깔끔하게 코드에 적용하기 const user = await myDataSource.query(` select id, email, nickname, password from users where email = ?`, [email]) console.log('user', user) 해당 query의 결과 user를 콘솔에 찍어보면 아래와 같이 배열에 담겨서 반환된다. user [ { id: 1, email: 'codekim@justcode.co.kr', nickname: 'codeKim', password: 'c0dek!m' } ] 배열안에 객체로 담겨서 반환되기 때문에 유저의 유무를 체크할 때도 .length === 0을 사용해서 비교했다. // 없다 => 없는 유저..
🎉 ORM ( Object Relational Mapping) 객체지향 프로그래밍과 관계형 데이터베이스 사이의 호환되지 않는 데이터를 변환해준다. 그래서 우리는 프로그래밍 언어만으로도(자바스크립트, 파이썬) 데이터 베이스 내부의 자료 속성에 접근할 수 있다. [장점] SQL문을 작성하지 않아도 되기 때문에 개발의 생산성이 향상된다. 이미 짜여진 SQL문을 ORM이 자동 생성해주기 때문에 관련 쿼리문 작성 버그나 실수가 잦아진다. [단점] raw query에 비해 실행 속도가 느리다. ORM이 선언한 SQL쿼리의 미세한 수정이나 디버깅이 어렵다. ORM으로 표현 못하는 쿼리가 존재한다. => 특정 ORM에 익숙해지면 다른 ORM 사용시 또 처음부터 익혀야하는 비용이 발생한다. 따라서 SQL문을 완벽히 이해..
intro kakao oauth2 개념 정리하기 노드 세션 2번까지 시청하기 인스타그램 진행하던 프로젝트 READ, UPDATE, DELETE 기능 구현하기 노드 프로젝트 초기 셋팅은 지난달에만 20번 넘게 해봤다.. 두달배웠다고 장고 전문가는 아닌데 장고와 전혀 다른식의 동작방식이 이해하기 참 어려웠다. 1차 프로젝트 리빌딩도, 솔직히 다른 사람 코드를 보면서 따라쳤을 뿐, 왜 그런 코드가 필요하고 컨트롤이 아닌 서비스에서 작성해야하는지 정확히 몰랐다. 그래서 개념정리를 하기 위해 인스타그램을 혼자 만들고 있었는데 하길 잘했다 싶다. 전문적이진 아니지만.. 그래도 API를 만들 수 있다는 자신감이 생겼다. 오늘부터는 프리온보딩 백엔드를 위한 노드 영상이 주어졌다. 내가 몰랐던 ORM 개념이 등장하고 또..
intro 항상 느끼지만.. 기본문법은 참 재미없다 사실인걸.... 💡 날짜 new Date()를 호출하면 새로운 Date 객체가 생성된다. 인수없이 호출하면 현재 날짜와 시간이 저장된 Date 객체가 반환된다. const rightNow = new Date(); console.log(rightNow); // 2022-09-19T09:00:50.835Z // 아래와 같이 날짜,시간,월의 값을 가져올 수 있다. const rightNow = new Date(); const year = rightNow.getFullYear(); const month = rightNow.getMonth() + 1; const date = rightNow.getDate(); const day = rightNow.getDay()..