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

home2 게시판 Node.js, Express 게시판 라우터 후 요청.body를 못읽는 것 같아요 ㅠㅠ

라우터 후 요청.body를 못읽는 것 같아요 ㅠㅠ

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

    김보라
    참가자

    이틀동안 씨름하다가 도저히 안되겠어서 문의드립니다. 

    일단 db = client.db('todoapp');  밑에 app.db = db; 는 추가했습니다.

    다른 코드들은 잘 되고,  밑에 이 두 코드만 안됩니다.

     

     

    // 데이터 저장 및 업데이트
    router.post('/add', function (요청, 응답) {
    요청.app.db.collection('counter').findOne({name : '게시물갯수'}, function(에러, 결과){ // db에서 게시물 갯수 데이터를 꺼낸다
    let 총게시물갯수 = 결과.totalPost // 꺼낸 게시물 갯수 데이터를 변수에 담는다

    요청.app.db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date }, function (에러, 결과) { // post db에 총 게시물 갯수 +1, 요청받은 데이터들을 db에 저장한다
    요청.app.db.collection('counter').updateOne({name:'게시물갯수'},{ $inc: {totalPost:1} },function(에러, 결과){
    if(에러){return console.log(에러)} // 글번호 업데이트를 위해서, counter db에 게시물 갯수를 업데이트한다.
    응답.send('전송완료');
    })
    })
    })
    });
    TypeError: Cannot read properties of undefined (reading 'title') << 에러

    // 게시물 삭제하기
    router.delete('/delete', function(요청, 응답) {
    console.log(요청.body); // ajax에서 data : { _id : 1 } => 요청.body 로 받아옴
    요청.body._id = parseInt(요청.body._id); // 요청받은 데이터는 꼭 정수로 변환
    요청.app.db.collection('post').deleteOne(요청.body, function(에러, 결과) { // 요청받은 데이터 (data : { _id : 1 }) 삭제
    console.log('삭제완료');
    응답.status(200).send( { message : '성공했습니다.' }); // 응답코드
    })
    });

    TypeError: Cannot read properties of undefined (reading '_id') << 에러

    헝헝 ㅠㅠ 도와주세영

    #19332

    codingapple
    키 마스터

    server.js 상단에 const모여있는 곳 하단에

    app.use(express.json());

    이걸 추가해봅시다

    #19337

    김보라
    참가자

    그래도 안됩니다 ㅠ_ㅠ  지금  코드 3개가 다 안되는데, server.js 에서는 작동되고, 

    routes.index.js 에서는 안돼요 ㅠ_ㅠ

    뭔가 비슷한 맥락인 것 같기도 하고 일단  안되는 코드 하나만 올려볼게요

    일단-----server.js ----------

    const express = require('express');
    const app = express();
    const MongoClient = require('mongodb').MongoClient;
    const bodyParser = require('body-parser');
    const methodOverride = require('method-override')
    require('dotenv').config()

    app.use('/', require('./routes/index.js') );
    app.use(express.urlencoded({extended: true}))
    app.use(express.json()); // <<<<<<<< 추가했어요 ㅠ_ㅠ
    app.use('/public', express.static('public'))
    app.use(methodOverride('_method'))
    app.set('view engine', 'ejs');

    // DB접속하기
    let db;
    MongoClient.connect(process.env.DB_URL, {useUnifiedTopology: true, useNewUrlParser: true }, function(에러, client) {
       if (에러) return console.log(에러)
       db = client.db('todoapp'); // todoapp이라는 database에 연결좀여
       app.db = db;
       app.listen(process.env.PORT, function() {
          console.log('listening on 8080')
        })
    });

    ------------routes.index.js----------

    // 게시판 저장
    router.post('/add', function (요청, 응답) {
      요청.app.db.collection('counter').findOne({name : '게시물갯수'}, function(에러, 결과) { // db에서 게시물 갯수 데이터를 꺼낸다
        let 총게시물갯수 = 결과.totalPost // 꺼낸 게시물 갯수 데이터를 변수에 담는다

        요청.app.db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date },
        function (에러, 결과) { // post db에 총 게시물 갯수 +1, 요청받은 데이터들을 db에 저장한다

          요청.app.db.collection('counter').updateOne({name:'게시물갯수'},{ $inc: {totalPost:1} },function(에러, 결과){
          if(에러){return console.log(에러)} // // 글번호 업데이트를 위해서, counter db에 게시물 갯수를 업데이트한다
          응답.send('전송완료');
          })
        })
      })
    });

     

    ------에러코드

    listening on 8080
    D:\git\class\todoapp\node_modules\mongodb\lib\utils.js:113
    throw err;
    ^

    TypeError: Cannot read properties of undefined (reading 'title')
    at D:\git\class\todoapp\routes\index.js:26:77
    at D:\git\class\todoapp\node_modules\mongodb\lib\utils.js:704:5
    at executeCallback (D:\git\class\todoapp\node_modules\mongodb\lib\operations\execute_operation.js:65:7)
    at handleCallback (D:\git\class\todoapp\node_modules\mongodb\lib\utils.js:109:55)
    at D:\git\class\todoapp\node_modules\mongodb\lib\operations\find_one.js:31:9
    at D:\git\class\todoapp\node_modules\mongodb\lib\utils.js:704:5
    at D:\git\class\todoapp\node_modules\mongodb\lib\cursor.js:256:9
    at handleCallback (D:\git\class\todoapp\node_modules\mongodb\lib\core\cursor.js:32:5)
    at nextFunction (D:\git\class\todoapp\node_modules\mongodb\lib\core\cursor.js:874:5)
    at D:\git\class\todoapp\node_modules\mongodb\lib\core\cursor.js:750:7
    [nodemon] app crashed - waiting for file changes before starting...

    #19340

    김보라
    참가자

    해결했어요 ㅠㅠ app.use(express.urlencoded({extended: true})) 이거를 false로 하니까 되네여.. 하....

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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