• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 mysql로 node.js 연동할때 req.body.id 값을 못 가져옵니다.

mysql로 node.js 연동할때 req.body.id 값을 못 가져옵니다.

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #60335

    이해욱
    참가자
    server.js
    app.post('/add', function(req, res){
      var id= parseInt(req.body.id);
      var title = req.body.title;
      var content = req.body.content;
      console.log(id,title,content);
      var sql = 'INSERT INTO post (id, title, content) VALUES(?, ?, ?)';
      connection.query(sql, [[id], title, content], function(err, result){
        if(err)
        {
          console.log(err);
          res.status(500).send('Internal Server Error');
        }
        else
        {
          var sql = 'UPDATE count SET totalpost = totalpost +1';
          connection.query(sql,function(err,num){
            if(err)
            {
              console.log(err);
              res.status(500).send('Internal Server Error');
            } 
            else
            {
              res.render('index.ejs');
            }
          });
    
    에러
    NaN 1234 1234  -> (id,title,content); 순인데 id값에 NAN이 뜹니다
    
    console.log(req.body.id);  ->했을시 undefined 이 뜹니다.
    var id= parseInt(req.params.id); ->이렇게 해도 undefined 뜹니다
    
    Error: Unknown column 'NaN' in 'field list'
        at Packet.asError (C:\Users\atolo\Desktop\server\node\node_modules\mysql2\lib\packets\packet.js:728:17)  
        at Query.execute (C:\Users\atolo\Desktop\server\node\node_modules\mysql2\lib\commands\command.js:29:26)  
        at Connection.handlePacket (C:\Users\atolo\Desktop\server\node\node_modules\mysql2\lib\c
    
    package.json 에
    "body-parser": "^1.20.1", 설치도되어있습니다.
    
    
    app.use(bodyParser.urlencoded({extended: false}))  ->true 로 바꾸도 false 로바꿔도 안되고
    app.use(express.json());  ->이걸 추가 해도안됩니다. 또는 app.use(bodyParser.json()); 이렇게 해도안됩니다.
    이상하게
    var id= parseInt(req.body.id);
    var title = req.body.title; 
    var content = req.body.content; 
    console.log(id,title,content);           -> body 했을경우 title과 content는 되는데 id만 안됩니다.
    
    
    #60355

    이해욱
    참가자
    app.get('/write',function(req, res){
      var sql = 'SELECT id FROM post';
      connection.query(sql,function(err,topics){
        if(err)
        {
          console.log(err);
          res.status(500).send('Internal Server Error');
        }
        else
        {
          res.render('write.ejs', {posts: topics[0]});
        }
      })
    })
    
    
    app.post('/add', function(req, res){
      console.log(req.body.id);
      var id= parseInt(req.body.id);
      var title = req.body.title;
      var content = req.body.content;
      var numberid = 1;
      var sql = 'INSERT INTO post (id, title, content, numberid) VALUES(?, ?, ?, ?)';
      connection.query(sql, [[id], title, content, numberid], function(err, result){
        if(err)
        {
          console.log(err);
          res.status(500).send('Internal Server Error');
        }
        else
        {
          var sql = 'UPDATE count SET totalpost = totalpost +1';
          connection.query(sql,function(err,num){
            if(err)
            {
              console.log(err);
              res.status(500).send('Internal Server Error');
            } 
            else
            {
              res.render('index.ejs',{posts : result[0]});
            }
          });
        }
      })
    })
    
    write.ejs
     <form action="/add" method="POST">
                    <input type="text" value="<%= posts.id %>" name="id" style="display:none;">
                    <label>제목</label>
                    <input type="text" class="form-control" name="title" style="width: 770px;">
                    <label>내용</label>
                    <input type="text" class="form-control wow" name="content" style="width: 770px;">
                    <button type="submit" class="btn btn-primary">Primary</button>
                </form>
    몇시간 동안 삽질해서 어느정도 됐는데
    Error: Duplicate entry '92' for key 'post.PRIMARY'
    at Packet.asError (C:\Users\atolo\Desktop\server\node\node_modules\mysql2\lib\packets\packet.js:728:17)
    PRIMAY키가 중복되서 오류뜨는거같아서 
    여기서 id를 1 키울 방법이 뭐가있을까요?
    
    connection.query(sql, [[id+=1], title, content, numberid], function(err, result){ 여기서 하면 한번만 되고2번은 안되더라구요
    혹은 id값을 id=id+1;  이렇게 해도안되구요
    무슨 방법이 있을가요?
    #60358

    이해욱
    참가자
    app.post('/add', function(req, res){
      var id= parseInt(req.body.id);
      var title = req.body.title;
      var content = req.body.content;
      var numberid = 1;
      var sql = 'INSERT INTO post (id, title, content, numberid) VALUES(?, ?, ?, ?)';
      connection.query(sql, [[id], title, content, numberid], function(err, result){
        if(err)
        {
          console.log(err);
          res.status(500).send('Internal Server Error');
        }
        else
        {
          var sql = 'UPDATE post SET id = id +1';
          connection.query(sql,function(err,num){
            console.log(num);
            if(err)
            {
              console.log(err);
              res.status(500).send('Internal Server Error');
            }
            else
            {
              var sql = 'UPDATE count SET totalpost = totalpost +1';
              connection.query(sql,function(err,good){
                if(err)
                {
                  console.log(err);
                  res.status(500).send('Internal Server Error');
                }
                else
                {
                  res.render('index.ejs',{posts : result[0]});
                }
              })
            }
          })
        }
      })
    })
    
    
    생각을해봐서
    var sql = 'UPDATE post SET id = id +1';
          connection.query(sql,function(err,num){
            console.log(num);
            if(err)
            {
              console.log(err);
              res.status(500).send('Internal Server Error');
            }
    ~!@~@
    !~@@!
    
    
    이렇게 했는데 도저히 안되네요 ㅠㅠㅠ
    방법이없을까요
    #60379

    codingapple
    키 마스터
    req.body.id 가 안나오면 프론트엔드에서 안보내서그럴수 있습니다 
     <input type="text" value="<%= posts.id %>"
    value에 잘 뭐가 박혀있나 개발자도구에서 확인해봅시다
    #60395

    이해욱
    참가자
    write.ejs
    
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
      <!-- <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> -->
            
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
     
      <link href="/public/main.css" rel="stylesheet">
        
      <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
      <script type="text/javascript" src="/public/se2/js/service/HuskyEZCreator.js" charset="utf-8"></script>
        
    </head>
    <body>
        <div class="_container">
            <div class="header">
                <%- include('nav.html')%>
            </div>
            <div class="left-menu"></div>
            <div class="center-menu">
                <form action="/add" method="POST">
                    <input type="text" value="<%= posts.id %>" name="id" style="display:none;">
                    <label>제목</label>
                    <input type="text" class="form-control" name="title" style="width: 770px;">
                    <label>내용</label>
                    <input type="text" class="form-control" name="content" style="width: 770px;">
            </div>
            <div class="right-menu"></div>
            <div class="footer"></div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js" integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous">
        </script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.min.js" integrity="sha384-IDwe1+LCz02ROU9k972gdyvl+AESN10+x7tBKgc9I5HFtuNz0wWnPclzo6p9vxnk" crossorigin="anonymous">
        </script>
    </body>
    </html>
    server.js
    
    app.post('/add', function(req, res){
      var id= parseInt(req.body.id);
      var title = req.body.title;
      var content = req.body.content;
      var numberid = 1;
      var sql = 'INSERT INTO post (id, title, content, numberid) VALUES(?, ?, ?, ?)';
      connection.query(sql, [[id], title, content, numberid], function(err, result){
        if(err)
        {
          console.log(err);
          res.status(500).send('Internal Server Error');
        }
        else
        {
          var sql = 'UPDATE count SET totalpost = totalpost +1';
          connection.query(sql,function(err,good){
            if(err)
            {
              console.log(err);
              res.status(500).send('Internal Server Error');
            }
            else
            {
              res.render('index.ejs',{posts : result[0]});
            }
          })
        }
      })
    })
    
    
    error
    
    ReferenceError: C:\Users\atolo\Desktop\server\node\views\write.ejs:28
        26|         <div class="center-menu">
        27|             <form action="/add" method="POST">
     >> 28|                 <input type="text" value="<%= posts.id %>" name="id" style="display:none;">    
        29|
        30|                 <label>제목</label>
        31|                 <input type="text" class="form-control" name="title" style="width: 770px;">
    posts is not defined
    
    
     
    
    
    
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠