1차 프로젝트 -1 주제선정,DB구축

백동기·2022년 3월 4일
0

1차 프로젝트

목록 보기
1/4

처음으로 IT 1차프로젝트를 진행하게되었다.

나 포함 4명이고

우리는 주제선정과 각자의 역할분담을 하기로 했다.

토론결과

주제 쇼핑몰

나,다른 1명 = 벡엔드

다른 2명 = 프론트

나는 벡엔드를 담당하기로했고, 쇼핑몰중 상품쪽 벡엔드담당, 다른 한분은 유저쪽 벡엔드담당

이렇게 역할분담을 나누었다.

벡엔드 담당은 먼저 DB구축부터 들어갔다.

DB구축은 인터넷에 있는

이미지를 참조하여 DB설계에 들어갔다.

Nodejs 의 Sequelize를 이용하여 벡엔드에서 바로 db로 넘어가게
짜려고 한다.
express-generator를 이용하여 기본 구조를 생성
CMD켜고

npm install express-generator -g
express --ejs team_first_project
CD: team_first_project
npm install

nodemon 설치

npm install nodemon -g

package.json

...
"scripts": {
"start": "node ./bin/www",
"dev": "nodemon ./bin/www"
},
...

설정해주고

eslint style
코드의 통일성을 위해 eslint style을 맞춰주자

npm install -g eslint

slint 초기화 세팅
eslint를 다음 설정값을 참고해서 세팅해 보자
코드 스타일은 Airbnb 스타일로 맞추도록 한다.

eslint --init
cs.son@DESKTOP-JLQT4EH C:\Workspace\nodeproj
$ eslint --init
√ How would you like to use ESLint? · To check syntax, find problems, and enforce code style
√ What type of modules does your project use? · CommonJS (require/exports)
√ Which framework does your project use? · None of these
√ Does your project use TypeScript? · No
√ Where does your code run? · Node
√ How would you like to define a style for your project? · Use a popular style guide
√ Which style guide do you want to follow? . Airbnb: https://github.com/airbnb/javascript
√ What format do you want your config file to be in? · JSON
Checking peerDependencies of eslint-config-airbnb-base@latest
The config that you've selected requires the following dependencies:

/.env 설정

NODE_ENV=development //개발모드
PORT=3000
LOGGER_LEVEL=debug
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=team_first_project
DB_ID=postgres
DB_PASS=postgres
DB_DIALECT=postgres

DB이름도 team_first_project 로 지어줬다. 통일해야 헷갈리지않아서

dotenv
.env파일을 사용하기 위해 dotenv 라이브러리를 설치

dotenv 설치

npm install dotenv --save

dotenv 사용
.env환경을 사용하려면 다음과 같이 사용할 수 있다.

const dotenv = require('dotenv');

dotenv.config();

const NODE_ENV = process.env.NODE_ENV;

bodyparser 설치

npm install body-parser --save

bodyparser 설정
/app.js

...
const logger = require('morgan');
const bodyParser = require('body-parser');

...(중간생략)...
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
...

logger
로그를 잘 관리할 수 도록 winston을 설치해서 로깅처리를 하도록 한다.

로깅처리를 위한 winston 설치

npm install winston --save

로그파일 작성을 위한 winston-daily-rotate-file 설치
매일 날짜에 맞춰 로그를 자동으로 생성해 주는 라이브러리를 설치

npm install winston-daily-rotate-file --save
logger 설정
다음과 같이 로그전용 라이브러리를 생성해서 로깅처리를 하도록 한다.
(콘솔 출력과 로그파일 출력을 설정할 수 있다.)

cors를 처리하기 위해 cors를 설치한다.

cors 설치

npm install cors --save

cors 환경 설정
환경설정 파일을 다음과 같이 생성한다.

/config/corsConfig.json

{
"origin": ["http://localhost:3000"],
"methods": ["OPTIONS", "GET", "POST", "HEAD", "PUT", "DELETE"]
}

/app.js //APP.JS에 COR 적용하자

...
const cors = require('cors');
const corsConfig = require('./config/corsConfig.json');
const logger = require('./lib/logger');
...(중간생략)...

app.use(cors(corsConfig));
app.use(express.json());

DB연동

DB는 다음과 같이 (별도로) 준비한다.

PostgreSQL 11.4
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=team_first_project
DB_ID=postgres
DB_PASS=postgres

npm install pg pg-hstore --save

sequelize 설치

npm install sequelize --save

이제 코드를 넣어주자
/models/connection.js

const Sequelize = require('sequelize');
const dotenv = require('dotenv');

dotenv.config();

const db = {
username: process.env.DB_ID,
password: process.env.DB_PASS,
database: process.env.DB_DATABASE,
host: process.env.DB_HOST,
port: process.env.DB_PORT,
dialect: process.env.DB_DIALECT,
};

// sequelize 생성
const sequelize = new Sequelize(
db.database,
db.username,
db.password,
{
host: db.host,
port: db.port,
dialect: db.dialect,
},
);

exports.sequelize = sequelize;

이제 DB연결은 문제가 없고

먼저 폴더를 생성

models, router, service, dao 파일을 만들고

models 설정된것이 router >타고 넘어가서 >service> dao >> DB 로 가는
설계를 하였다.

본 프로젝트는 자바스프링의 MVC 구조를 모방한다.
프로세스의 흐름은 Controller --> Service --> DAO의 순서를 따르며
각 구조별 파일명은 다음과 같다. (예: Department)

Model (테이블 정의 파일): /models/product.js
Controller (라우터 파일): /routes/product.js
Service (비즈니스 로직 파일): /service/productService.js
DAO (데이터 액세스 파일): /dao/productDao.js

코딩 순서는 Model --> DAO --> Service --> Router 순으로 한다.

Products에서 Sequelize 연결 product.js에 db에 담길 상품 정보및 타입을 적어주고

index.js에서도 적어주고

routes product.js에서도 적어준다

routers index.js 에서도 잘 적어주고

service에서도 적어줘야겟지

dao 도 적어주자, dao는 실질적으로 db와 제일 가까운곳이다. dao>>db로 가니까

자 이렇게 product관련 상품들을 여럿 작업해주자
product
productcategory
productimagefile
productreply

그리고 여기서 끝이아니다!!

pk,fk 설정을 해줘야한다.

이건 다음장으로

profile
IT개발자

0개의 댓글