본문 바로가기

clone toy projects/node-react-shop-app

백엔드 기본구조 생성하기

package.json 세팅 및  설치

npm init 

npm install bcryptjs cors dotenv jsonwebtoken mongoose

npm install -D nodemon

 

 

nodemon 스크립트 작성

 "dev" : "nodemon src/index.js",

전체 폴더 구조 생성

express.static()

이미지, CSS 파일 및 JavaScipt 파일과 같은 정적 파일을 제공하려면 Express의 express.static 내장 미들웨어 기능을 사용.

바로 upload 폴더에 있는 이미지 파일들을 프론트로 나중에 보낼수 있게

 

public 이라는 폴더에 있는 정적인 파일을  제공할 수 있다.

 

 

가상 경로를 지정하여 특정 url 을 지정할 수 있다.

 

상대경로를 path 모듈을 사용해서 절대경로를 사용하게 한다.

 

 

상대 경로 : / 로 시작 안함

절대경로 : /로 시작함.

 

CORS

app.use(cors());

cors 미들웨어 등록

Express.json()

app.use(express.json());

클라이언트에서 오는 body의 json형식을 받기 위해 json 미들웨어 등록

 

 

MongoDB사용하기

몽고디비는 로컬에서 설치를해서 사용을 할 수도있고 cloud service를 이용해서 사용할 수 있다.

 

cloud servic (atlas)를 사용.

 

1. 몽고디비 회원가입 로그인 후 project 생성 후 database 생성 및 cluster 생성

 

 

2. 몽고디비 user생성 --> 아이디, 비밀번호 ,DB 이름을 기억해서 어플과 연결해야하니 기억 ! 

좌측에 database Access 로 들어가서 add new database user

 

3. mogoose 다운

npm install mongoose

 

4.  mongoose 이용해서  앱과 연결  

아래와 같이 작성하고 몽고디비 데이터베이스 url을 인자로 넣어주어  DB와 연결 후 테스트

url에는 db의 아이디와 비밀번호가 있으니 차후 환경변수로 설정

const dotenv = require("dotenv");
dotenv.config();

 

 

Mogoose에 대해서

애플리케이션 계층에서 특정 스키마를 적용 후 모델로 생성 & 모델 유효성 검사 등등 유용한 기능을 제공한다.

 

1. 스키마 생성  

Sehema : Document의 구조, 기본값, 유효성 검사기 등을 정의 

예) 기본값 default : 0         유효성 검사  required : true

 

 

2. 스키마 이용해서 Uesr 모델 만들기

Model :  레코드 생성, 쿼리, 업데이트, 삭제 등을 위한 데이터베이스 인터페이스를 제공.

 

 

3. 모델을 이용해서 데이터를 컨트롤

 

3-1  모델 객체의 create 메서드로 douctment 생성하기

3-2 인스턴스 객체 생성 후 save 메서드로 douctment 생성하기

 

Model 및 Schema 생성하기

 

Express에서 에러 처리하기

원래는 위에처럼 app.use(fuction(error,req,res,next) { res.json({messages : error.message})로 에러 처리를 하지만

비동기 요청으로 인한 에러는 에러처리기에서 저 에러를 받지 못한다.

 

 

그래서 위와 같이  next 안에서 에러를 던져야 한다.

 

 

 

아래는 국룰적인 에러처리 미들웨어 형태이다.

app.use((error, req, res, next) => {
  res.status(err.status || 500);
  res.send(error.message || '서버에서 에러가 났습니다.');
})

 

 

'clone toy projects > node-react-shop-app' 카테고리의 다른 글

랜딩 페이지  (0) 2023.08.12
상품 업로드  (0) 2023.08.12
로그인  (0) 2023.08.11
회원가입  (0) 2023.08.10
프론트엔드 기본 구조 생성하기  (0) 2023.08.08