db설정하고 값 넘기기

·2024년 11월 19일

Node.js

목록 보기
4/6
app.get("/boardWrite", (req,res) =>{ 
    res.sendFile(__dirname+"/public/boardWrite.html");  //sendredirect와 같은 형식
});

index_express.js로 이동해서 새로운 가상 경로를 하나 추가해준다

서버 가동을 했는데 이렇게 에러가 난다?
node와 mysql통신을 하는데, 통신하는 방식이 조금 다르다. 그래서 방식을 맞출거에용

select host,user,plugin,authentication_string from mysql.user;

mysql열어서 root가 가지고있는 인증정보를 확인할 필요가 있다.
쿼리 구문을 작성해서 인증정보를 볼 수있는데 이 정보를 조금 바꿔야 한다.

alter user 'root'@'localhost' identified with mysql_native_password by '1234';

이 구문을 통해서 정보를 바꿔주고 다시 확인해본다.

정보를 확인해보면 root가 native로 바뀐걸 볼 수있다.

다시 vscode로 돌아아ㅘ서 node 서버를 가동하면 정상적으로 작동되는 것을 알 수 있다.

const express = require('express'); // Express라는 웹 프레임워크를 불러오는 코드
const app = express();   // 익스프레스 가동시킬 준비 객체생성 
const port = 3002;  // 서버가 동작할 포트 번호 설정

// dbconn.js 파일을 불러와서 데이터베이스 연결 관련 함수들을 사용할 수 있도록 설정
var dbconn = require(__dirname+"/dbconn.js"); // 현재 실행 중인 파일의 디렉토리 경로로 dbconn.js 파일을 불러오기
var conn = dbconn.init(); // dbconn.init()을 호출하여 데이터베이스 연결 객체를 초기화하고, conn에 저장
dbconn.connect(conn);   // 데이터베이스에 연결


// body-parser 모듈을 불러와서 HTTP 요청의 본문(body) 데이터를 처리할 준비
var bodyParser = require("body-parser");  // 데이터 추출하는 파서 사용
app.use(bodyParser.json());   // bodyParser안에 있는 제이슨 문서로 만들것이다.
app.use(bodyParser.urlencoded({extended:false}));   //한글깨짐 방지 


// '/style' 경로로 들어오는 요청에 대해 해당 경로에 있는 static 파일을 제공
app.use("/style",express.static(__dirname+"/style"));  // 가상경로와 폴더 매칭 메인으로 들어오게 되면 해당되는 기본 위치에서 퍼블릭 폴더에 들어가게 매칭하는것. 

// 메인 페이지 요청 처리 ("/" 경로로 요청이 들어오면)
app.get("/", (req,res) =>{ 
    res.sendFile(__dirname+"/index.html");  //sendredirect와 같은 형식. 클라이언트에게 boardWrite.html 파일을 응답으로 보냄
});

// 게시글 작성 페이지 요청 처리 ("/boardWrite" 경로로 요청이 들어오면)
app.get("/boardWrite", (req,res) =>{ 
    res.sendFile(__dirname+"/boardWrite.html");  //sendredirect와 같은 형식.클라이언트에게 boardWrite.html 파일을 응답으로 보냄
});


// 게시글 작성 처리 요청 (POST 방식)
app.post("/boardWriteAction",function(req,res){

    var body = req.body; // 클라이언트로부터 받은 요청의 본문(body)을 변수 body에 저장
    console.log(body);   // 요청의 내용을 콘솔에 출력 (주로 디버깅 용도)


    var sql ="insert into board(originbidx,depth,level_,subject,contents,writer,password,midx) values(null,0,0,?,?,?,?,101)";
    var sql2 ="update board set originbidx =(select A.maxbidx from (select max(bidx) as maxbidx from board)A);"

    var params = [body.subject,body.writer,body.contents,body.password]
    console.log(sql);

    conn.query(sql,params,function(err,results,fields){ // 쿼리 메서드를 사용해서 
        if(err) {
            console.log(err);
        }
        console.log(results);
    }); 

    conn.query(sql2,params,function(err,results,fields){ // 쿼리 메서드를 사용해서 
        if(err) {
            console.log(err);
        }
        console.log(results);
    }); 

    res.redirect("/");  // 메인으로 이동 
});

// 서버를 실행하여 포트 3002에서 대기하도록 설정
app.listen(port,()=>{
    console.log("server running~~~"); // 서버가 성공적으로 실행되면 콘솔에 출력
}); 

자꾸 경로를 바꾸게 되서 헷갈리니까 index_express.js 전체 코드

콘솔창에 node 서버 작동시켜서 글쓰기 화면에서 값을 입력하면 콘솔창에 내가 작성한 값이 뜬다.


넘어온 객체 값 insert하기

// 게시글 작성 처리 요청 (POST 방식)
app.post("/boardWriteAction",function(req,res){

    var body = req.body; // 클라이언트로부터 받은 요청의 본문(body)을 변수 body에 저장
    console.log(body);   // 요청의 내용을 콘솔에 출력 (주로 디버깅 용도)


    var sql ="insert into board(originbidx,depth,level_,subject,contents,write,password,midx)
    values(null,0,0,?,?,?,?,101)";
    var sql2 ="update board set originbidx =(select A.maxbidx from (select max(bidx) as maxbidx from board)A);"

    var params = [body.dubject,body.writer,body.contents,body.password]
    console.log(sql);

    conn.query(sql,params,function(err,results,fields){ // 쿼리 메서드를 사용해서 
        if(err) {
            console.log(err);
        }
        console.log(results);
    }); 

    conn.query(sql2,params,function(err,results,fields){ // 쿼리 메서드를 사용해서 
        if(err) {
            console.log(err);
        }
        console.log(results);
    }); 

    res.redirect("/");  // 메인으로 이동 
});

0개의 댓글