node js의 기본 설정에 대해서 정리하겠습니다.
nodejs 설치는 공식홈페이지 에서 진행하시면 됩니다.
$ npm init
// 쭉 엔터 눌러서 파일 생성해주기
// package.json 의 Debug 부분
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js",
"dev": "nodemon server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express":"^4.17.1",
"mysql":"^2.18.1",
"nodemon":"1.18.3",
"body-parser":"1.19.0"
}
}
test : test코드를 실행할 때 사용
start : express 서버를 시작할 때 사용
dev : nodemon을 이용해서 express 서버 시작
express : 웹 프레임워크 모듈
mysql : mysql 사용하기 위한 모듈
body-parser : 클라이언트에서 오는 요청의 본문을 해석해주는 미들웨어
nodemon >> 수정된 소스코드를 바로바로 반영해주는 모듈
1번에서 생성된 package.json 에서 'main' 에 해당하는 부분의 이름으로 파일을 생성해줍니다. 저는 package.json에서
"main": "server.js"
로 이름을 변경했기 때문에 server.js 파일을 생성했습니다.
// 모듈가져오기
const express = require("express");
const bodyParser = require('body-parser');
// express 서버 생성
const app = express();
app.use(bodyParser.json());
app.listen(5000, () => {
console.log('애플리케이션이 정상적으로 시작됐습니다.')
})
const mysql = require("mysql");
const pool = mysql.createPool({
connectionlimit: 10,
host: 'mysql',
user: 'root',
password: 'soohyun',
datebase: 'myapp'
});
// 다른 곳에서 쓸 수 있게 exports 해주기
exports.pool = pool;
server.js 에서 exports 된 pool을 불러오기
server.js 파일에
const db = require('./db');
추가
require 괄호안에 이름은 데이터베이스 설정 파일 이름입니다.
db.pool.query(`CREATE TABLE lists (
id INTEGER AUTO_INCREMENT,
value TEXT,
PRIMARY KEY (id)
)`, (err, results, fileds) => {
console.log('results', results)
})
app.get('/api/values', function( req, res) {
db.pool.query('SELECT * FROM lists;',
(err, results, fileds) => {
if(err)
return res.status(500).send(err)
else
return res.json(results)
})
})
app.post('/api/value', function(req, res, next) {
db.pool.query('INSERT INTO lists (value) VALUES("${req.body.value}")',
(err, results, fileds) => {
if(err)
return res.status(500).send(err)
else
return res.json({success: true, calue: req.body.value})
})
})
app.listen(5000, () => {
console.log('애플리케이션이 정상적으로 시작됐습니다.')
})