1. 스키마, 시드 파일 확인
- mysql에 접속해 cmarket 데이터베이스 생성
- 미리 구성되어 있는 스키마를 기반으로 데이터베이스의 테이블을 생성
- mysql -u root -p < schema.sql -Dcmarket
- 테이블에 기반이 되는 데이터를 저장
- mysql -u root -p < seed.sql -Dcmarket
2. 서버
- 환경변수를 통한 데이터베이스 정보 저장
- 보안 및 편의상 이유로 비밀번호는 환경 변수로 분리해놓는 편이 좋음
- 공개된 환경에 비밀번호가 노출되면 안 되기 때문에 환경 변수를 관리하는 파일은 반드시 .gitignore 파일에 등록!!! 중요
- .env 파일을 통해 데이터베이스 패스워드 저장
3. 라우터
- 라우터는 컨트롤러로 진입할 수 있게 도와주는 endpoint
- app.js를 통해 endpoint를 확인
- routes 폴더에 users.js 파일 생성
- controller.orders.get, controller.orders.post 작성
- index.js 파일에 user.js endpoint 작성
4. 컨트롤러
- 각 endpoint에 대한 구현
- GET /users/:userId/orders
- req.params를 통해 userId값을 받음
- userId값이 있을 경우 모델의 orders의 get 메소드를 통해 적절한 응답 내보내기
- POST /users/:userId/orders
- req.params를 통해 userId값을 받고, req.body를 통해 orders, totalPrice값을 받음
- 모든 값을 제대로 전달 받았을 경우 모델의 orders의 post 메소드를 통해 적절한 응답 내보내기
5. 모델
- SQL 쿼리문을오 DB의 정보를 처리
- 데이터베이스 쿼리는 비동기 요청!
const queryString = `SELECT * FROM users where users.id = ? `;
//데이터베이스에 연결하여 찾고자하는 값의 쿼리문 작성
const params = [[userId]]
// 파라미터로 전달 받은 값을 배열의 형태로 저장!
db.query(queryString, params, (error, result) => {
callback(error, result);
});
//query()메소드를 통해 데이터베이스에서 원하는값 찾기
//쿼리문의 ? 자리에 두번째로 전달받은 인자값(pamas)이 들어감!!!
//단일값일 경우 이중배열로 넣어야하며, 값이 여러개일 경우 삼중배열로 작성!!
//[[[userId, totalPrice]]]