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

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

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

10 글 보임 - 1 에서 10 까지 (총 11 중에서)
  • 글쓴이
  • #60659

    이해욱
    참가자
    server.js
    app.get('/write',function(req, res){
      res.render('write.ejs');
    })
    app.post('/add', function(req, res){
      var id= parseInt(req.body.id);
      console.log(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});
            }
          })
        }
      })
    })
    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>
            
      <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 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>        
            </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>
    에러
    eferenceError: C:\Users\atolo\Desktop\server\node\views\write.ejs:28
        26|             <form action="/add" method="POST">
        27|
     >> 28|                 <input value="<%= posts.id %>" name="id" style="display : none">
        29|                 <label>제목</label>
        30|                 <input type="text" class="form-control" name="title" style="width: 770px;">
        31|                 <label>내용</label>
    posts is not defined
    
    
    write.post 할떄 꼭 이 id값을 받고싶은데 posts is not defined 에러가 뜹니다
    #60728

    codingapple
    키 마스터
    새로운 글쓰는 화면같은데 거기선 굳이 id를 강제로 넣어줄 필요가 있을까요
    #60766

    이해욱
    참가자
    글번호를 입력해주고 싶어서 그럽니다 ㅠㅠ
    id는 어차피 자동으로 올라가긴 하는데
    그냥 저 코드가 뭐가 문제진 알고싶습니다 ㅠㅠㅠ
    
    
    #60791

    이해욱
    참가자
    server.js
    
    
    const express =require('express');
    const app = express();
    app.use('/public', express.static('public'))
    const bodyParser= require('body-parser');
    app.use(express.json());
    app.use(bodyParser.urlencoded({extended: false}));
    app.set('view engine', 'ejs');
    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    
    
    const mysql = require('mysql2');
    const methodOverride = require('method-override');
    app.use(methodOverride('_method'));
    const connection = mysql.createConnection({
    host : 'localhost',  
    user : 'root',
    password : '*****8',
    database : 'moonserver'
    });
    var session = require("express-session");
    var MySQLStore = require('express-mysql-session')(session);
    app.use(
      session({
        secret: 'g#1234!@#$asd',
        resave: false,
        saveUninitialized: true,
        store:new MySQLStore({
          host:'localhost',
          port:3306,
          user:'root',
          password:'*****',
          database:'moonserver'
        })
      })
    );
    app.use(passport.initialize());
    app.use(passport.session());
     
    #60813

    codingapple
    키 마스터
    서버에서 ejs 파일 보낼 때 posts라는 변수는 안보냈는데 ejs파일에선 쓰고 있어서 그렇습니다
    app.post에있는 body.id 이런것도 다 지웁시다
    #60864

    이해욱
    참가자
    server.js
    app.get('/write',function(req, res){
      var id= parseInt(req.body.id);
      console.log(id);
      var sql = 'SELECT id, title, content FROM post WHERE id=?';
      connection.query(sql,[id],function(err,topics){
        console.log(topics);
        res.render('write.ejs',{posts : topics});
      })
    })
    app.post('/add', function(req, res){
      var id= parseInt(req.body.id);
      console.log(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});
            }
          })
        }
      })
    })
    write.ejs
    <form action="/add" method="POST">
                    
                    <input 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>
    
    
    
    에러
    eferenceError: C:\Users\atolo\Desktop\server\node\views\write.ejs:28
    26| <form action="/add" method="POST">
    27|
    >> 28| <input value="<%= posts.id %>" name="id" style="display : none">
    29| <label>제목</label>
    30| <input type="text" class="form-control" name="title" style="width: 770px;">
    31| <label>내용</label>
    posts is not defined
    
    
    글 post 할때 글 번호 id값을 꼭 받고싶습니다
    도대체 왜 req.body.id 가 안받아지는지 모르겠씁니다
    
    
    #60904

    codingapple
    키 마스터
    id 서버로 보내는건 글 수정할 때 필요하지 새글 발행시엔 필요없습니다
    #61022

    이해욱
    참가자
    새글 발행할시 req.body.id 는 무슨일이 있어도 받을수없는건가요?
    지금 mysql FOREIGN KET 추가 해서 post.numberid 에 login.id 를 연결시키고싶습니다 
    
    
    server.js
    app.post('/add', function(req, res){
      var sql2='SELECT * FROM post INNER JOIN login ON id=numberid';
      connection.query(sql2, function(err, posts){
      console.log(posts);
      var title = req.body.title;
      var content = req.body.content;
      var numberid = parseInt(req.body.id);
      console.log(numberid);
      var sql = 'INSERT INTO post (title, content, numberid) VALUES(?, ?, ?)';
      connection.query(sql, [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});
            }
          })
        }
      })
    })
    })
    write.ejs
     <form action="/add" method="POST">
                    
                    <input value="<%= posts.id %>" name="id" style="display : none;">
                    <label>제목</label>
                    <input type="text" class="form-control kim" 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>
    
    에러
    
    ReferenceError: C:\Users\atolo\Desktop\server\node\views\write.ejs:28
        26|             <form action="/add" method="POST">
        27|
     >> 28|                 <input value="<%= posts.id %>" name="id" style="display : none;">
        29|                 <label>제목</label>
        30|                 <input type="text" class="form-control kim" name="title" style="width: 770px;">
        31|                 <label>내용</label>
    posts is not defined
    req.body.id 를 받아와야 numberid 값에 id를 넣고싶은데
    req.body.id 를 못받아와서 지금 몇시간째 삽질만 하는중입니다. ㅠㅠ
    생각해보니 app.post에서 id값 가져오는건 의미가 없겠네요
    Mysql 결제해서 강의들었는데 서버쪽의 예시가 별로없어서 좀 헷갈리네요
    post.numberid 에 login.id 값을 넣을 방법이 뭐가있을까요?
    #61050

    codingapple
    키 마스터
    passport 설치 잘해놨으면 
    로그인된 유저들은 app.post안에서 req.user 출력해보면 유저정보 담겨있습니다
    #61063

    이해욱
    참가자
    server.js
    app.post('/add', function(req, res){
      var sql2= 'SELECT * FROM post INNER JOIN login ON id=numberid';
      connection.query(sql2, function(err, result){
      var title = req.body.title;
      var content = req.body.content;
      var numberid = req.user.id;
      console.log(numberid);
      var sql = 'INSERT INTO post (title, content, numberid) VALUES(?, ?, ?)';
      connection.query(sql, [title, content, numberid], function(err, result2){
        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});
            }
          })
        }
      })
    })
    })
    에러
    undefined
    Error: Column 'numberid' cannot be null
    
    
    일단 로그인 회원가입 로그아웃은 기능 잘됩니다
    근데 왜 req.user 가 undefined 값을 못 받을까요
    참고로 app app.post('/add', function(req, res){ 
    는 passport 설정 아래에다 작성했습니다
    
    passport 설정 문제인가요?
    
10 글 보임 - 1 에서 10 까지 (총 11 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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