항해 99
항해 99 57일차 11/14일
코딩이좋아요
2022. 11. 15. 01:13
오늘은 프로젝트 기본 틀을 잡았다.
타입스크립트 환경에서 ORM 으로 시퀄라이즈르르 사용하기로 했고 타입스크립트로는 처음 사용해보는 것이였다.
강의를 들을때 부터 생각했던 걱정이 시퀄라이즈 사용하는 방법이였는데 역시나 쉽게쉽게 사용할 수 있는게 아니였다.
구글링을 엄청 했고 그중에 찾은 블로그가 도움이 되었다
타입스크립트 기본 셋팅
폴더 생성 깔아야 할 것들
더보기
npm init -y
npm i -D typescipt
tsconfig.json 만들기
npm i express @types/express sequelize mysql2 sequelize-cli @types/node
npm i cors cookie-parser dotenv @types/cors @types/cookie-parser @types/dotenv
npx sequelize init 을 사용하면 config파일과 models 폴더들이 생성 되는데
config파일안에 있는 congfig.json파일을 config.ts파일로 바꾸고 밑에 코드를 붙혀준다
더보기
import * as dotenv from 'dotenv';
dotenv.config();
export const config = {
development : {
username : process.env.DB_USERNAME || 'root',
password : process.env.DB_PASSWORD,
database : process.env.DB_DBNAME || 'typescript_test',
host : process.env.DB_HOST || 'localhost',
port : process.env.DB_PORT || 3306,
dialect : "mysql"
}
}
models파일안에 index.js파일안에 있는 것을 지우고 index.ts로 바꾼다. 바꾸고 아래 코드를 넣어준다.
더보기
import {Sequelize} from 'sequelize';
import {config} from '../config/config'
// export const sequelize = new Sequelize('typescript_test', 'root','Jaehyeon2!',{
// host : 'localhost',
// dialect : 'mysql',
// })
export const sequelize = new Sequelize(
config.development.database,
config.development.username,
config.development.password,
{
host: config.development.host,
dialect: 'mysql'
}
)
app.ts파일을 만들고 실행해주면 된다.
더보기
import express from 'express';
import cors from 'cors';
import cookieParser from 'cookie-parser';
import dotenv from 'dotenv';
import helmet from 'helmet'; //악성 스크립트 보호
// import { sequelize } from './models';
import { Request, Response, NextFunction } from 'express';
import { sequelize } from './src/models/index';
import indexRouter from './src/routes/index';
dotenv.config();
const app = express();
const port = 3001;
// const prod: boolean = process.env.NODE_ENV === 'production';
// app.set('port', prod ? process.env.PORT : 3000);
// sequelize
// .sync({ force: false }) //true일시 테이블 초기화
// .then(() => {
// console.log('데이터베이스 연결 성공');
// })
// .catch((err: Error) => {
// console.error(err);
// });
// if (prod) {
// app.use(helmet());
// app.use(
// cors({
// origin: '*',
// credentials: true,
// })
// );
// } else {
// app.use(
// cors({
// origin: true,
// credentials: true,
// })
// );
// }
app.use(express.json());
app.use(cookieParser());
app.use('/', indexRouter);
app.use((err: any, req: Request, res: Response, next: NextFunction) => {
console.error(err);
res.status(500).send('서버 에러 발생! 서버 콘솔을 확인하세요.');
});
app.listen(port, async () => {
console.log(`${port}로 실행중`);
// authenticate 메소드로 연결 확인
await sequelize
.authenticate()
.then(async () => {
console.log('DB 연결완료');
})
.catch((e) => {
console.log(e);
});
});