프론트엔드-코드/Node.js

node js mysql, express 같이

sdafdq 2023. 11. 14. 14:13
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