const express = require('express');
const mysql = require('mysql');
const db = mysql.createConnection({
host:'localhost',
user : 'root',
password:'0000',
database:'member'
});
const app = express();
const HOST_NAME = "127.0.0.1";
const PORT = 9999;
app.get("/student", (req,res)=>{
db.query('select * from student', (err, rows)=>{
if(err) throw err;
res.header("Content-Type", "application/json");
res.statusCode = 200;
res.send(rows);
});
});
app.listen(PORT, ()=>{
console.log(`====== Server is running : http://${HOST_NAME}:${PORT}`);
});
코드 자체는 쉬움.
저렇게 createConnection 하면은, 지금이 localhost인데 나중에는 뭐 db파일 따로 빼서
경로/jdbc:h2:tcp://localhost/./jpashop
이런 식이지 않을까 추측 중.
선생님한테 물어보니, DB같은 경우 아예 다른 호스팅에서 환경구축을 시작한다고 함.
그게 무슨말이냐 하면..
mysql 워크벤치에서 db를 export 해 봤더니, 아예 쿼리문으로 나왔음.
테이블 생성부터 있던 값들 insert하는 그런걸로.
아마, 호스팅 서버에서, 아예 mysql 거기다가 설치를 한 다음에,
환경 만들고,
그 export한 쿼리들 실행하게끔 하는 걸로 그 상태를 만드는 듯.
그 다음 user, password, 사용할 db 고르고,
express 설정 해 주고,
라우터 설정.
응답 들어 왔을 때
db에 쿼리 날려준 다음, rows로 결과 받아줌.
json 배열 형태로 오는듯? 아니면 객체 형식이거나. 객체형식이랑 json 형식이랑 출력 거의 비슷하니까.
라우팅에 루트url은 아무것도 안설정해놔서
app.get("/", (req,res)=>{
res.redirect("/student");
});
이렇게 그냥 리다이렉트 해 놓음
다음은 post, insert
먼저, 얘가 데이터를 그냥은 못 읽어옴.
body-parser라는 게 있어야 함.
npm 해서 깔고,
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
이렇게 설정.
urlencoded란 왜 application/x-www-form-urlencoded의 저 urlencoded를 의미.
여튼 저렇게 하면 웹에서 post 형식으로 날라온 데이터를 받을 수 있음.
req.body 이렇게. body에 있음.
const addStudent = (e)=>{
e.preventDefault();
axios.post("http://127.0.0.1:9999/student/add",{
id,
name,
belong,
phone,
status
});
}
이런 식으로 리액트에서 보냈음.
저기 객체의 필드들은 state들이고, 저렇게 변수이름? 저런 식으로 객체형식에 맞지 않지만 넣어주면,
리액트가 id:id의 값, name:name의 값
이렇게 변수이름:변수이름의값 이런 형식으로 넣어줌.
그래서, 저렇게 post방식으로 저 url에 데이터와 함께 보내면,
app.post("/student/add", (req,res)=>{
const data = req.body;
db.query(`insert into student( _id ,name, belong, phone, status) values('${data.id}','${data.name}', '${data.belong}', '${data.phone}', ${data.status});`, (err, rows)=>{
if(err) throw err;
res.header("Content-Type", "text/plain");
res.statusCode = 200;
res.send("추가 완료");
});
});
서버에서 이렇게 받게끔 함.
저렇게 req.body 해서 데이터들 가져온 다음(데이터는 다 기본적으로 객체, json 형식이라고 보면 됨)
db.query해서 쿼리 뭐 잘 파싱해서 넣어줌.
'프론트엔드-코드 > Node.js' 카테고리의 다른 글
cors 정책 (0) | 2023.11.15 |
---|---|
express + mysql (0) | 2023.11.03 |
express (0) | 2023.10.30 |
서버 띄우기 2 url마다 다르게 받기 (0) | 2023.10.12 |
파일 fs (0) | 2023.10.11 |