express와 typeorm을 적용한 CRUD API 만들기(1) - 서드파티 패키지/모듈 활용 초기세팅 준비

여리·2023년 1월 22일
0

우선 무언가에 대한 코드를 짜기 위해서는 코드를 위한 서드파티 모듈/패키지를 정의한다. 기초적인 API를 만들기 위해서는 dotenv, morgan, cors, nodemon, typeorm, express 등등 필요한 모듈이나 패키지를 require할 수 있어야 한다. 이때 require하는 영역 중에 dotenv를 요청하는 경우에는 dotenv를 불러올때 dotenv에 관리해야 하는 환경변수에 대한 정보를 불러와야하기때문에 코드는 다음과 같이 설정 될 수 있다.

const dotenv = require("dotenv") //dotenv 환경변수 요청
dotenv.config() //dot 요청에 대한 정보 불러오기

이는 한줄로 요약하면 해당코드와 같게 된다.

require("dotenv").config()

환경변수의 경우는 let, const와 같이 변수를 별도로 설정할 필요가 없는 이유(별도로 변수정의 후 사용되지 않는다.)때문에 require("dotenv").config()로 사용 될 수 있다.
그럼 다음 단계인 다른 서드파티 모듈과 패키지를 요청해보자.

const express = require("express");
const morgan = require("morgan");
const cors = require("cors");

const {Datasource} = require("typeorm");

이때 typeorm의 경우 민감할 수 있는 정보들을 database에 효율적으로 잘 전달하기 위해서 이렇게 만들어 준다.
(예시)

const {datasource_name} = new Datasource({
	type : process.env.TYPEORM_CONNECTION,
    host : process.env.TYPEORM_HOST,
    username : process.env.TYPEORM_USERNAME,
    password : process.env.TYPEORM_PASSWORD,
    database : process.env.TYPEORM_DATABASE,
    port : process.env.TYPEORM_PORT
    .
    .
    .
    
})

이때
type은 사용하는 패키지의 종류(ex-mysql),
host는 사용하는 host의 주소(ex-127.0.0.1),
username은 사용하는 패키지 종류의 username(default 값을 쓰 경우 root를 쓰기도 한다.),
password는 사용하는 패키지 종류의 설정 비밀번호,
database는 사용하는 database의 명칭,
port는 사용하는 패키지의 종류의 설정 port 정도 이다.
각 설정별로 맞게끔 env로 설정하여 진행하는 것이 좋다.(환경변수의 설정으로 외부에 노출되어서는 안되는 정보들을 설정한다.)

그리고 난 후
datatype에 대한 initialize를 할 수 있도록 한다. 이는 databas와의 연동을 위하여 initialize를 하는 것이다.
이때 연동이 잘 됐을때와 잘 되지 않았을때를 구분하기 위하여 추가적인 코드를 작성해줄 수 있도록 한다.

{database_name}.initialize()
.then(() => {
    console.log("🆗🆗🆗DataSource has been initialize~🆗🆗🆗");
  })
  .catch((err) => {
    console.log("❌❌❌DataSource hasn't been initialize❌❌❌");
  });

이후
app.xxx를 사용할 수 있도록 하는데 여기서 app은 express가 framework로서 기본으로 제공하는 다양한 내부기능(공식문서 내 영문명칭은 'application')을 담아내기 위해 사용하는 객체로 이를 사용할 수 있도록 정의를 내린다.

const app = express();

여기서 app.use()는 매개변수의 형태로 들어오는 다양한 함수들을 받아 app에 middleware로 사용하는데 미들웨어는 다른 곳에서 추가적으로 공부하고 살펴보도록 하자..

총 정리하면 이정도의 코드가 만들어질 수 있겠다.

require("dotenv").config();
const express = require("express");
const morgan = require("morgan");
const cors = require("cors");

const { DataSource } = require("typeorm");

const mysqlDatabase = new DataSource({
  type: process.env.TYPEORM_CONNCETION,
  host: process.env.TYPEORM_HOST,
  username: process.env.TYPEORM_USERNAME,
  password: process.env.TYPEORM_PASSWORD,
  database: process.env.TYPEORM_DATABASE,
  port: process.env.TYPEORM_PORT,
});

mysqlDatabase
  .initialize()
  .then(() => {
    console.log("🆗🆗🆗DataSource has been initialize~🆗🆗🆗");
  })
  .catch((err) => {
    console.log("❌❌❌DataSource hasn't been initialize❌❌❌");
  });

app = express();
app.use(express.json());
app.use(morgan("combined"));
app.use(cors());

-------------------------------------------------------

//이제 여기에 생성 및 적용하고자하는 API코드를 생성한다.//

-------------------------------------------------------

const PORT = process.env.PORT;

const start = async () => {
  try {
    app.listen(PORT, () => console.log(`server is listening on ${PORT}`));
  } catch (err) {
    console.error("Failed server listening", err);
    throw err;
  }
};

start();

이제 초기셋팅은 어느정도 끝났으니...
CRUD(create, read, update, delete)를 하는 단계로 넘어가서 API를 생성해 보도록 하자.

profile
beckend developer

0개의 댓글