npm i dotenv express-validator jsonwebtoken mysql2
npm i express
새로운 폴더를 만들어서, 저것들을 전부 깔아줘.
그런 다음에
//express 모듈 구현
const express = require('express');
const app = express();
해주고
//dotenv 모듈
const dotenv = require('dotenv');
dotenv.config();
dotenv를 해주면 되는데,
아직 env파일이 없으니까 .env 파일 하나 만들어주고, 포트 번호를 일단 넣어줘
PORT = 9999;
그렇게 하고 저렇게 dotenv 모듈을 넣어주면 되는데,
dotenv는 뭐냐하면
내가 방금 .env 파일에 저장한 정보들을 불러와서 사용할 수 있게 해주는 친구야.
그래서
app.listen(9999);
로 해줬던 것을
app.listen(process.env.PORT);
이렇게 적어줘도 괜찮은거지.
다음에는 routes라는 폴더를 만들어서 users.js를 하나 만들어줄거야.
const express = require('express');
const router = express.Router();
router.use(express.json());
//router쓸꺼면 use필요해 너 오브젝트 post형태로 값이 들어오는 거면 json 형태로 들어올텐데, 그러면 use추가해야해 라는 뜻
//회원가입
router.post('/join', (req, res) => {
res.json('회원가입')
})
//로그인
router.post('/login', (req, res) => {
res.json('로그인')
})
//비밀번호 초기화 요청
router.post('/reset', (req, res) => {
res.json('비밀번호 초기화 요청')
})
//비밀번호 초기화
router.put('/reset', (req, res) => {
res.json('비밀번호 초기화')
})
//이걸 모듈로 쓴다고 했으니 export를 해줘야해!
module.exports = router;
처음에 erd설계했던 것처럼 그대로 작성을 해준 것이고, 각 기능에 맞춰서 해주면 돼.
그리고 app.js에서는
//express 모듈 구현
const express = require('express');
const app = express();
//dotenv 모듈
const dotenv = require('dotenv');
dotenv.config();
app.listen(process.env.PORT);
// 유의미한 포트 번호로 지정하는 것이 좋음
// app이 포트넘버로 9999를 받아서 들어오면은 우리는 뭘할꺼냐면
//user에 관한 라우터를하나 생성해가지구
const userRouter = require('./routes/users');
//공통ui를 하나 생성할 것이고
app.use('/', userRouter)
app.use를 사용해서 users 모듈을 받아서 사용하는거야.
books.js
const express = require("express");
const router = express.Router();
router.use(express.json());
//전체 도서 조회
router.get("/", (req, res) => {
res.json("전체 도서 조회");
});
//개별 도서 조회
router.get("/:id", (req, res) => {
res.json("개별 도서 조회");
});
//카테고리별 도서 목록 조회
router.get("/", (req, res) => {
res.json("카테고리별 도서 목록 조회");
});
module.exports = router;
carts.js
const express = require("express");
const router = express.Router();
router.use(express.json());
//장바구니 담기
router.post("/", (req, res) => {
res.json("장바구니 담기");
});
//장바구니 조회
router.get("/", (req, res) => {
res.json("장바구니 조회");
});
//장바구니 도서 삭제
router.delete("/:id", (req, res) => {
res.json("장바구니 도서 삭제");
});
//장바구니에서 선택한 주문 예상 상품 목록 조회
router.get("/", (req, res) => {
res.json("장바구니에서 선택한 주문 예상 상품 목록 조회");
});
module.exports = router;
likes.js
const express = require("express");
const router = express.Router();
router.use(express.json());
//좋아요 추가
router.post("/:id", (req, res) => {
res.json("좋아요 추가");
});
//좋아요 삭제
router.delete("/:id", (req, res) => {
res.json("좋아요 삭제");
});
module.exports = router;
orders.js
const express = require("express");
const router = express.Router();
router.use(express.json());
//주문하기
router.post("/", (req, res) => {
res.json("주문하기");
});
//주문 목록(내역) 조회
router.get("/", (req, res) => {
res.json("주문 목록(내역) 조회");
});
//주문 상세 상품 조회
router.get("/:id", (req, res) => {
res.json("주문 상세 상품 조회");
});
module.exports = router;
app.js // 다 테이블 생성했으니 app.js에서도 불러와줘야지!
//express 모듈 구현
const express = require("express");
const app = express();
//dotenv 모듈
const dotenv = require("dotenv");
dotenv.config();
app.listen(process.env.PORT);
// 유의미한 포트 번호로 지정하는 것이 좋음
// app이 포트넘버로 9999를 받아서 들어오면은 우리는 뭘할꺼냐면
//user에 관한 라우터를하나 생성해가지구
const userRouter = require("./routes/users");
//공통ui를 하나 생성할 것이고
app.use("/users", userRouter); //쉽게 말해 routes에 있는 users.js를 불러오는 것
const bookRouter = require("./routes/books");
app.use("/books", bookRouter);
const likeaRouter = require("./routes/likes");
app.use("/likes", likeaRouter);
const cartRouter = require("./routes/carts");
app.use("/carts", cartRouter);
const orderRouter = require("./routes/orders");
app.use("/orders", orderRouter);
const userRouter = require("./routes/users"); -> user에 관한 라우터를하나 생성해가지구
app.use("/users", userRouter); -> 쉽게 말해 routes에 있는 users.js를 불러오는 것
나머지들도 똑같아. 다들 routers에 있는 각 파일들을 맞춰서 불러와준거고,
이렇게 적어두면,
원래 있던 url
router.get("books/:id") 이런 것들을 router.get("/:id") 이렇게 바꿔주면 돼. 공통된 url은 저 라우터에서 가져다 썼으니까, 이렇게 중복은 생략해주면 됩니당
스키마 하나 만들어서
테이블 만들구

이런식으로 id는 pk이고 notnull이고 자동으로 생성되게 AI해주고,
EMAIL도 낫널로 해주고,
NAME도 NOTNULL
PASSWORD도 NOTNULL
쉽쥬?
다른 books나 orders나 carts 들도 똑같이 테이블 만들어서 체크만 해주면 됩니당.
이걸 sql로 표현해주면
CREATE TABLE `Bookshop`.`users` (
`id` INT NOT NULL AUTO_INCREMENT,
`email` VARCHAR(100) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`password` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `email_UNIQUE` (`email` ASC) VISIBLE);
이렇게 됩니당. apply누르면 바로 알아서 만들어줘. 쉽쥬??