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

home2 게시판 Node.js, Express 게시판 파트2 번호 달기 왜 안되는지 도저히 모르겠습니다.

파트2 번호 달기 왜 안되는지 도저히 모르겠습니다.

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

    김병태
    참가자

    const express = require('express');
    const app = express();
    const bodyParser= require('body-parser');
    app.use(bodyParser.urlencoded({extended: true}))

    const MongoClient = require('mongodb').MongoClient;
    app.set('view engine','ejs')

    var db;
    MongoClient.connect('mongodb+srv://test:test@cluster0.itjb3.mongodb.net/myFirstDatabase?retryWrites=true&w=majority', function(에러, client){
        // if (에러) return console.log(에러);
        //서버띄우는 코드 여기로 옮기기

        //연결되면 할 일

        if(에러){return console.log(에러)}

        db=client.db('todoApp');
        // db.collection('post').insertOne({이름:'John', 나이:20,_id:1}, function(에러, 결과){
        //     console.log('저장완료');
        // })

        app.listen('8080', function(){
          console.log('listening on 8080')
        });
      })

    //누군가가 /pet으로 방문시 pet관련 안내문을 띄워주자

    app.get('/pet', function(요청, 응답) { 
        응답.send('펫용품 사시오')
    })

    app.get('/beauty', function(요청, 응답) { 
        응답.send('뷰티용품 사시오')
    })

    app.get('/', function(요청, 응답) { 
      응답.sendFile(__dirname +'/index.html')
    })

    app.get('/write', function(요청, 응답) { 
        응답.sendFile(__dirname +'/write.html')
    });

    app.post('/add', function(요청, 응답){
        db.collection('counter').findOne({name : '게시물갯수'}, function(에러, 결과){
          var 총게시물갯수 = 결과.totalPost;
          db.collection('post').insertOne( { _id : (총게시물갯수 + 1), 제목 : 요청.body.title, 날짜 : 요청.body.date } , function(){
            console.log('저장완료')
            응답.send('전송완료');
          });
        });
        
      });

    // 어떤 사람이 /add 경로로 POST 요청을 하면 ??를 해주세요

      
    // app.post('/add', function(요청, 응답){
    //     console.log(요청.body);
    //     응답.send('전송완료')
    //     console.log(요청.body.date);
    //     console.log(요청.body.title);
    //   });

      //어떤 사람이 /add라는 경로로 post 요청 보내면 데이터 2개(날짜 제목을 보내주는데 이떄 post라는 이름을 가진 컬렉션에 2개 저장하기)

    app.get('/list', function(요청, 응답){
     db.collection('post').find().toArray(function(에러, 결과){
        console.log(결과)
        응답.render('list.ejs',{posts:결과});
        })
    })

    //     app.post('/add', function(요청, 응답){
    //     응답.send('전송완료');
    //     // db.collection('post').insertOne( { _id : 2, 제목 : 요청.body.title, 날짜 : 요청.body.date } , function(){
    //         db.collection('post').insertOne( { 제목 : 요청.body.title, 날짜 : 요청.body.date } , function(){
    //       console.log('저장완료')
    //     });
    //   });

    //list get요청으로 접속시 실제 디비에 저장된 데이터들로 이쁘게 꾸며진 HTML 보여줌

    // app.get('/list', function(요청, 응답){
    //     응답.render('list.ejs');
    //     db.collection('post').insertOne( { 제목 : 요청.body.title, 날짜 : 요청.body.date } , function(){
    //       console.log('저장완료')
    //     });
    //   });

     //   app.post('/add', function(요청, 응답){ //add로 post 요청시
    //     응답.send('전송완료');      //DB.counter 내의 총 게시물갯수를 찾음
    //     db.collection('counter').findOne({name:'게시물갯수'},function(에러, 결과){

    //         // console.log(결과.totalPost);    //총 게시물 갯수를 변수에 저장
    //         var 총게시물갯수 = 결과.totalPost;

    //         db.collection('post').insertOne( { _id:총게시물갯수+1, 제목 : 요청.body.title, 날짜 : 요청.body.date } , function(){
    //             console.log('저장완료') //이제 db에 새 게시물 기록함
    //            //counter라는컬렉션에 있는 totalPost라는 항목도 1 증가시켜야함
    //             db.collection('counter').updateOne( {name : '게시물갯수' } , { $inc : { totalPost : 1 } } , function(에러, 결과){
    //             // console.log('수정완료')
    //             if(에러){return console.log(에러)}  //완료되면 DB.counter 내의 총 게시물
    //           })
    //         });

    //     });
    //   });

     

     

    <hr />

     

     

     

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
      <title>Document</title>
    </head>
    <body>
      
        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            <a class="navbar-brand" href="#">Navbar</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
              <span class="navbar-toggler-icon"></span>
            </button>

            <div class="collapse navbar-collapse" id="navbarNav">
              <ul class="navbar-nav">

                <li class="nav-item active">
                  <a class="nav-link" href="#">할일 <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                  <a class="nav-link" href="#">Features</a>
                </li>
                <li class="nav-item">
                  <a class="nav-link" href="#">임시</a>
                </li>
               
              </ul>
            </div>
          </nav>

          <h4 class="container mt-4"><strong>글 작성페이지</strong></h4>

          <div class="container mt-3">
            <form action="/add" method="POST">
              <div class="form-group">
                <label>오늘의 할일</label>
                <input type="text" class="form-control" name="title">
              </div>
              <div class="form-group">
                <label>날짜</label>
                <input type="text" class="form-control" name="date">
              </div>
              <button type="submit" class="btn btn-outline-secondary">Submit</button>
            </form>
          </div>
        
        
          <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>
          <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
        </body>
    </html>

     

    <hr />

     

     

     


     

    제가 빡통이라 그런지 도저히 코드 봐도 모르겠습니다. 

     

    Desktop\apple\Nodejs\todoapp\server.js:56
    var 총게시물갯수 = 결과.totalPost;
    ^

    TypeError: Cannot read property 'totalPost' of null

     

    이런 에러가 뜨는지 3시간 가까이 강의 돌려보고 구글링해도 도저히 모르겠습니다. 알려주시면 감사하겠습니다.

    #14925

    codingapple
    키 마스터

    totalPost 왼쪽에 있는 결과가 null이라는 에러군요 DB에 있던 게시물을 못찾으면 그렇습니다  

     

    DB에는 name : 게시글갯수" 라고 저장해놓으셔서 이걸 찾고 싶으면  

    db.collection('counter').findOne({name : '게시글갯수"'}

    이렇게 써야할듯요?

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

About

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

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

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