201023_TIL
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 라우팅
Author And Source
이 문제에 관하여(201023_TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oh_ji_0/201023TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)