bookstore's Introduction
bookstore's People
bookstore's Issues
장바구니 담기 기능 구현
작업 설명
장바구니 담기 기능 구현
작업 상세 리스트
초기 개발환경 세팅
작업 설명
초기 개발 환경 세팅
작업 상세 리스트
- nodemon 설정
- dotenv를 통한 환경변수 관리
- DB 연결
- 초기 프로젝트 구조 설정
- 초기 라우팅 설정
- eslint, prettier 설정
작업 세부내용
nodemon 설정
- nodemon 설치
npm install nodemon --save-dev
- package.json script 설정
"scripts": {
"dev": "nodemon app.js"
}
- nodemon으로 application 실행
npm run dev
dotenv를 통한 환경변수 관리
- dotenv 모듈 설치
- .env 파일에 private한 정보 작성
- dotenv 모듈을 사용하여 원하는 환경변수 사용
DB 연결
- 환경변수를 사용하여 db configuration 설정
초기 프로젝트 구조 설정
- config : configuration 설정에 필요한 모듈
- controllers : 웹 애플리케이션에서 요청(request)과 응답(response) 사이의 로직을 처리
- routers : 엔드포인트와 해당 엔드포인트에서 실행돼야 할 로직을 연결
- middlewares : 메인 로직의 컨트롤러 앞뒤로 추가적인 일을 담당
초기 라우팅 설정
- 초기 API 명세를 기반으로 간단한 라우팅 작성
- users, books, carts, likes, orders
ESLint, Prettier 설정
-ESLint, Prettier 설정을 통한 일관성 있는 코드 작성
참고자료
카테고리 API 및 테이블 설계, 전체 카테고리 가져오기 구현
작업 설명
카테고리 API 및 테이블 구현
작업 상세 리스트
- 카테고리 API 작성
- 전체 카테고리 조회
- 카테고리 테이블 구현
- controller, route 구현
- controller
//controllers/categoryController.js
const getAllCategories = (req, res) => {
const sql = 'SELECT * FROM category';
connection.query(sql, (err, results) => {
if (err) {
return res.status(StatusCodes.BAD_REQUEST).end();
}
return res.status(StatusCodes.OK).json(results);
});
};
- route
// routes/category.js
const express = require('express');
const { getAllCategories } = require('../controllers/categoryController');
const router = express.Router();
router.use(express.json());
router.get('/', getAllCategories);
module.exports = router;
초기 ERD Diagram 설계
도서 조회 기능 구현
작업 설명
도서 조회 기능 구현
작업 상세 리스트
- 전체 도서 조회 기능
- 특정(개별 도서 조회 기능
- 카테고리별 도서 목록 조회 기능
- 신간 도서 목록 조회 기능
- 도서 목록 조회 페이징
장바구니 API JWT 구현
작업 설명
장바구니 API JWT 구현
작업 상세 리스트
- 장바구니 담기 API JWT 구현
- 장바구니 목록 조회 API JWT 구현
- 장바구니 삭제 API JWT 구현
- 장바구니 선택한 목록 조회 API JWT 구현
좋아요 추가 기능 구현
작업 설명
좋아요 추가 기능 구현
작업 상세 리스트
- 추가 로직(addLike) 구현
장바구니 선택 상품 조회 기능 구현
작업 설명
장바구니 선택 상품 조회 기능 구현
작업 상세 리스트
좋아요 API JWT 구현
작업 설명
좋아요 API JWT 구현
작업 상세 리스트
- 좋아요 추가 API에 JWT 구현
- 좋아요 삭제 API에 JWT 구현
로그인 기능 구현
작업 설명
로그인 기능 구현
작업 상세 리스트
- 유효성 검사
- express-validator를 사용하여 email, password 유효성 검사 실행
- DB에 있는 이메일, 패스워드 일치 여부 확인
- db에 user가 입력한 이메일이 있는지 확인
- db의 salt를 활용하여 입력한 비밀번호와 db에 저장된 비밀번호의 일치 여부 확인
- 알맞은 response 반환
- 로그인 실패 시 알맞은 Error code 반환
주문 API 구현
작업 설명
주문 API 구현
작업 상세 리스트
- 주문 하기 기능 구현
- 주문 목록 조회 기능 구현
- 주문 상세 상품 조회 기능 구현
초기 API 설계
작업 설명
ERD Diagram을 바탕으로 초기 API를 설계한다.
작업 상세 리스트
- 회원 API
- 도서 API
- 주문 API
- 좋아요 API
- 장바구니 API
참고 자료
좋아요를 눌렀는 지에 대한 여부를 db로부터 가져오는 기능 구현
작업 설명
좋아요를 눌렀는 지에 대한 여부를 db로부터 가져오는 기능 구현
작업 상세 리스트
- 좋아요를 눌렀는 지에 대한 여부를 db로부터 가져오는 기능 구현
작업 상세 구현
//.controllers/bookController.js
const getBookInfo = (req, res) => {
const { user_id } = req.body;
const book_id = req.params.id;
const sql = `SELECT *,
(SELECT count(*) FROM likes WHERE books.id=liked_book_id) AS likes,
(SELECT EXISTS (SELECT * FROM likes WHERE user_id=? AND liked_book_id=?)) AS liked
FROM books
LEFT JOIN category
ON books.category_id = category.id
WHERE books.id=?;`;
const values = [user_id, book_id, book_id];
connection.query(sql, values, (err, results) => {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if (results[0]) {
return res.status(StatusCodes.OK).json(results[0]);
}
return res.status(StatusCodes.NOT_FOUND).end();
});
};
회원가입 기능 구현
작업 설명
회원가입 기능 구현
작업 상세 리스트
- 유효성 검사
- express-validator를 사용하여 email, password 유효성 검사 실행
- 비밀번호 암호화
- crypto 모듈을 사용하여 password를 암호화
- 알맞은 response 반환
- 회원 가입 성공 및 실패 시 알맞은 Error code 반환
- 메인로직을 route로부터 분리
- routes로부터 메인로직을 controller로 분리
- 유효성 검사를 통과한 email과 password 정보 DB에 저장
- 유효성 검사를 통과한 이메일, 암호화된 비밀번호, salt를 DB에 저장
참고자료
좋아요 삭제 기능 구현
작업 설명
좋아요 삭제 기능 구현
작업 상세 리스트
- 삭제 로직(removeLike) 구현
장바구니 조회 기능 구현
작업 설명
장바구니 조회 기능 구현
작업 상세 리스트
비밀번호 초기화 기능 구현
작업 설명
비밀번호 초기화 기능 구현
작업 상세 리스트
- 이메일 및 password 유효성 검사
- 비밀번호 초기화 요청 기능
- 새로운 비밀번호와 salt를 암호화하여 DB에 반영
- 알맞은 Response를 반환
장바구니에서 상품 제거 기능 구현
작업 설명
장바구니에서 상품 제거 기능 구현
작업 상세 리스트
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.