201023_TIL

oh_ji_0·2020년 10월 23일
1

TIL

목록 보기
50/61

TODAY I LEARNED

  • database sprint 정리

@@ 오늘은 데이터베이스 스프린트를 마무리 지었다.
MVC패턴(아직 학습하지 않았지만)으로 model controller 와 client를 분리하여 데이터베이스를 연결, 쿼리문을 통해서 데이터값을 받아오고 해당 값을 client에 뿌려주도록 했다.
dotenv 같은 환경변수를 세팅하는 모듈과 express middleware인 body-parser, morgan 등에 대해서 다시 찾아보고 정리하는 시간을 가졌다.

middleware를 사용하는 방법과 next에 대한 개념이 부족한 것 같아서 이를 다시 정리하려고 생각중이고, 주 초에 진행한 개인 포트폴리오(express, react)를 마무리지으며, react hooks에 대한 것도 다시 한번 정리할 예정이다.

module 정리

  • dotenv

    환경변수 process.env 를 사용할 수 있게 해주는 모듈.
    앱 entry 파일에서 require('dotenv').config() 등으로 세팅을 해주면 하위 파일에서 환경변수를 사용할 수 있다.

주요 파일구조

/server
  /controllers
  /db (db와의 연결) 
  /models (db와의 통신, db로부터의 값을 query를 통해 불러옴)
  app.js
  routes.js
  .env

주요 코드

  • DB 와의 연결
var con = mysql.createConnection({
  host: host,
  user: user,
  password: password,
  database: db_name,
});

con.connect(function (err) {
  if (err) throw err;
  console.log('connected');
});
  • DB와의 통신
con.query(queryString, queryArg, function(err,result){
  //result값, queryString에 대한 값. query객체
})

//queryString에 ?을 넣으면 queryArg에 있는 요소 순서대로 대입된다. 
//예시
connection.query('UPDATE users SET foo = ?, bar = ?, baz = ? WHERE id = ?', ['a', 'b', 'c', userId], function (error, results, fields) {
  if (error) throw error;
  // ...
});

query를 통해서 실행된 값이 result 값을 통해서 넘어온다. 쿼리문에 대한 모듈 문서는 이 곳을 참고하면된다.

result는 아래와 같이 배열 안 객체 형태로 찍힌다.

처음엔 값을 return으로 던지면 받을수 있지 않을까 생각했는데 생각처럼 되지 않았다. DB 값을 받는 것 또한 비동기 통신 코드로, 콜백이나 promise함수를 통해서 순서를 지켜줘야 했기 때문이다.

페어와 콜백을 통해서 값을 controller에서 받을 수 있었다.

컨트롤러에선 받은 값을 express 메소드를 통해서 요청에 대해서 결과값으로 응답해줄 수 있었다.

참고문서: express 라우팅

profile
기본에 충실하고 싶습니다. #Front-end-developer

0개의 댓글