- 썬더 클라이언트의 쿠키/헤더
- promisify is not defined
- controller에서 req.body로 입력 받은 것들을 한번에 service로 넘기기
- 빈값 자동으로 채우기
- git commit 메시지를 잘못 만들었을 경우 수정법
- Primary Key, Foreign Key
공부하며 느낀 점
참조한 사이트
위의 이미지와 같이 썬더 클라이언트에서 로그인을 성공했고, 쿠키와 헤더도 만들었는데, 토큰을 불러와야하는 기능들이 자꾸 실패했다.
새로운 창에서 새로운 api요청을 하는 것이 아니라, 같은 창에서해도 마찬가지였다.
확인을 해보니 새로운 창에서는 물론, 같은 창에서도 헤더나 쿠키가 사라지는 문제가 있었다.
방법은 썬더 클라이언트에 헤더를 직접 입력하는 것이었다.
promisify is not defined
라는 오류 메시지가 뜬다면 promisify 함수를 불러오지 못하고 있는 것이다.
util
이라는 모듈에 내장되어 있으며, 이것은 node.js의 내장 모듈이기 때문에 설치할 필요 없이 호출만 하면된다.
const util = require('util');
const { permission, name, nickname, email, password, passwordConfirm, address, phoneNumber } =
req.body;
await this.userService.signup_service(
permission,
name,
nickname,
email,
password,
passwordConfirm,
address,
phoneNumber
);
// 일반적으로 위와같이 controller 레이어에서 req.body를 입력받고 그것들을 하나하나 입력 또는 복붙해서 service 레이어로 넘긴다.
// 하지만 아래와 같은 방법으로 하나로 받을 수 있다.
await this.userService.updateUser_service(token, req.body);
// 대신 service 레이어에서 받을 때 req.body와 같이 . 이 들어간 이름으로 받을 수 없으니 다른 이름으로 받아야한다.
updateUser_service = async (token, updateData) => {
let updateDater = {};
const daterForUpdate = ['name', 'nickname', 'address', 'phoneNumber'];
for (const element of daterForUpdate) {
updateDater[element] = updateData[element] || user[element];
}
await this.userRepository.updateUser(
email,
name,
nickname,
hashPassword,
address,
phoneNumber
);
updateDater 라는 객체안에 daterForUpdate 에서 가져온 속성을 key-value로 넣는 것이다.
만약 value가 undefined 라면 user[element] 로 같은 일을한다.
즉, 위의 코드는 입력값이 존재하지 않으면 DB에 있는 값을 덮어씌우는 과정이다.
보통 git add .
후에 git commit
또는 git commit -m "<커밋내용>"
으로 커밋 메시지를 넣는데 실수를 했다.
다음의 명령어로 git commit --amend
가장 마지막 커밋 메시지를 수정할 수 있다고한다.
커밋 내용 수정이 끝나면 평소와 똑같이 ESC
를 누른후 :wq
로 저장하면된다.
내가 알고 있는 것
주키 Primary Key : 테이블 내에서 레코드들을 구분하기 위한 값, 테이블내에서 유일무이해야한다.
외래키 Foreign Key : 테이블끼리 관계를 설정하기 위한 값. 참조하고자 하는 테이블의 주키이다.
팀차원에서 정리 한 것
Primary Key, Foreign Key는 기본키, 외래키라고도 부르며 이러한 키들은 테이블에서 행을 고유하게 식별하거나 관계를 정의하는데 사용된다.
기본키 테이블 내에서 각 행을 고유하게 식별하는데 사용된다. 기본키는 중복이 없어야 하며, NULL 값을 가질 수 없다. 기본키를 사용하여 특정 정보(행)을 빠르게 검색하고 구분할 수 있다.
외래키 한 테이블의 속성(컬럼)이 다른 테이블의 기본키를 참조하는 경우를 말한다. 외래키를 사용하여 테이블과 테이블 간의 관계를 설정하고 연결할 수 있다. 외래키는 해당 테이블에 있는 값이 참조하는 다른 테이블의 기본키와 일치해야 한다.
위 내용으로 보면
'학번' 컬럼이 '학생' 테이블의 기본키가 되고, '강의번호' 컬럼이 '강의' 테이블의 기본키가 된다.
'수강 신청 현황' 테이블에서는 '번호'가 기본키가 되며 '학번', '강의번호'가 외래키가 되어
'수강 신청 현황' 테이블이 '학생' 테이블과 '강의' 테이블을 참조할 수 있게 된다.
이때까지 팀 프로젝트를 많이 했지만 내가 로그인 기능을 만든적은 없어서 미들웨어로 인증하는 것이 익숙치 않아 힘들었다.
마찬가지로 토큰을 어떻게 썬더 클라이언트에서 처리해야하는지 몰라서 헤맸다.
대신 썬더 클라이언트에서 헤더/쿠키를 어떻게 다뤄야하는지 알게 되었다.
2월6일 - Thuner Client에서 cookie 세팅하기
[2019.04.27] Promise 꿀팁 - util 모듈 promisify()
[git] 커밋 메세지 수정하기 (changing commit message)
팀원의 개발 블로그