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

home2 게시판 Node.js, Express 게시판 삭제 오류

삭제 오류

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

    서민지
    참가자
    삭제가 잘되다가 삭제하면 db에서 삭제는 잘 되는데 이런 에러가 뜹니다
    이유가 무엇일까요
    
    
    
    
    #59074

    서민지
    참가자
    const express = require('express');
    const app = express();
    const bodyParser= require('body-parser')
    app.use(bodyParser.urlencoded({extended: true})) 
    app.set('view engine','ejs');
    app.use(express.static("public"));
    const methodOverride = require('method-override')
    app.use(methodOverride('_method'))
    const MongoClient = require('mongodb').MongoClient;
    var db;
    MongoClient.connect('mongodb+srv://minji:0219@cluster0.lyybb93.mongodb.net/?retryWrites=true&w=majority',(에러,client)=>{
        
        db=client.db('blog');
        app.listen(3000,()=>{
            console.log('listening on 3000')
        });
    })
    app.get('/',(req,res)=>{
        res.render('home.ejs')
    })
    app.get('/about',(req,res)=>{
        res.render('about.ejs')
    })
    app.get('/post',(req,res)=>{
        res.render('post.ejs')
    })
    app.post('/add',(req,res)=>{
        db.collection('counter').findOne({name:'게시물갯수'},(에러,결과)=>{
            var count = 결과.totalPost;
        db.collection('post').insertOne({_id : count +1,제목: req.body.title, 내용: req.body.write},(에러,결과)=>{
            console.log(req.body);
            db.collection('counter').updateOne({name :'게시물갯수'},{ $inc :{totalPost:1}})
            //중간 글 삭제되면 글번호 당겨지게 하고 싶다...어케 하지?
        })
        })
        res.render('home.ejs')
    })
    app.get('/list',(req,res)=>{
        db.collection('post').find().toArray((에러, 결과)=>{
        res.render('list.ejs',{ posts : 결과});
        })
        
    })
    app.delete('/delete',(req,res)=>{
        req.body._id = parseInt(req.body._id);
        db.collection('post').deleteOne(req.body,(에러,결과)=>{
            res.status(200).send({message:"성공"})
        })
    })
    app.post('/comentadd',(req,res)=>{
        db.collection('coment').insertOne({number : parseInt(req.body.addd), 댓글: req.body.coment},(에러,결과)=>{
            console.log(req.body);
            res.render('home.ejs');
            //새로고침 하게 하고 싶어요
            //res.redirect('detail.ejs',{data:결과1, coments : 결과2})
            })
           
        })
    app.get('/detail/:id',(req,res)=>{
        db.collection('post').findOne({_id : parseInt(req.params.id)},(에러,결과1)=>{
            db.collection('coment').find().toArray((에러,결과2)=>{  
                res.render('detail.ejs',{data : 결과1 ,coments : 결과2}); })
                
            })
        })
     
    app.get('/edit/:id',(req,res)=>{
        db.collection('post').findOne({_id : parseInt(req.params.id)},(에러,결과)=>{
            res.render('edit.ejs', {data : 결과});
            console.log(결과)
        })
        
    })
    app.put('/edit',(req,res)=>{
        db.collection('post').updateOne({_id : parseInt(req.body.id)},{$set : {제목: req.body.title, 내용: req.body.write}},(에러,결과)=>{
            res.redirect('/list')
        })
    })
     
    #59075

    서민지
    참가자
    디테일.ejs
    
    
    <!DOCTYPE html>
    <html lang="ko">
    <head>
        <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR&display=swap" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="/style/detail.css">
        <meta
            name="viewport"
            content="width=device-width", initial-scale="1.0"
            user-scaleable="yes">
            
        <style>
        </style>
    </head>
    <body >
        <div class="wrap">
            <%-include('head.ejs') %>
        <!--페이지 로드되면 제목, 내용쪽으로 내려가게 보여주는 방법?-->            
                <div id="content">
                    <h1>상세페이지</h1>
                    <hr>
                    <h2>제목 : <%=data.제목 %></h2>
                    <br>
                    
    <h4><%=data.내용 %></h4>

                    <hr>
                </div>
                <div class="coment">
                    <h1>댓글</h1>
                    <hr>
                    <div class="coment_show">
                       

                              <%for(var i=0; i<coments.length; i++){ %>
                                  <% if(parseInt(coments[i].number)==parseInt(data._id))%>
                                     

    • <h2><%=coments[i].댓글%></h2>
    •                                
                              <% }%>
                         

                    </div><br>
                    <form action="/comentadd" method="POST" class="coment_write">
                    <textarea placeholder="댓글을 입력하세요" cols="100" rows="4" name="coment"></textarea>
                    <button name ="addd" class="add" value="<%=data._id%>" type="submit">작성</button>
                    </form>
                </div>

             
            </div>
            <!--main-->
    #59076

    서민지
    참가자
    삭제되면 왜 detail/:id로 넘어갈까요?
    #59087

    codingapple
    키 마스터
    삭제된글이라 detail페이지가면 그 글이 없어서 그런게 아닐까요 
    삭제요청 ajax로하는거같은데 삭제성공시 다른페이지로 이동시키는 코드를 확인해봅시다
    #59200

    서민지
    참가자
    <!DOCTYPE html>
    <html lang="ko">
    <head>
        <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR&display=swap" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="/style/list.css">
        <meta
            name="viewport"
            content="width=device-width", initial-scale="1.0"
            user-scaleable="yes">
            
        <style>
        </style>
    </head>
    <body>
        <div class="wrap">
            <%-include('head.ejs') %>
                <div id="list">
                    <h1>글 목록</h1>
                    <br>
                    <br>
                    
                </div>
                <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
                <script>
                   $('.delete').click(function(e){
                      var 글번호 = e.target.dataset.id;
                     
            
                      $.ajax({
                      method : 'DELETE',
                      url : '/delete',
                      data : {_id : 글번호}
                      }).done((결과)=>{
                        $(this).parent('li').fadeOut();
                      }).fail(()=>{
            
                      })
                    })
                 
                </script>
               
            </div>
    
    이게 ajax있는 list 폴더인데 .done일때 list에서 제거하라는 코드만 써뒀는데 왜 detail페이지로 이동하는걸까요..?
    
    
    #59222

    codingapple
    키 마스터
    class="delete"가 이상한데 있나 살펴보거나 
    서버에서 detail.ejs 보내주는 코드도 이상한데 없는지 확인해봅시다
     
    #59257

    서민지
    참가자
    전혀 이유를 모르겠습니다...
    delete에서 detail.ejs를 보여주라고 한 적도 없고
    왜 도대체 detail.ejs로 넘어가서 없다고 오류를 내는지...
    
    
    app.delete('/delete',(req,res)=>{
        req.body._id = parseInt(req.body._id);
        db.collection('post').deleteOne(req.body,(에러,결과)=>{
            res.status(200).send({message:"성공"})
        })
    })
    여기서 응답은 무조건 성공했다고 하는것 밖에 없지 않나요...?
    삭제된 후에 list에 있는 ajax .done()이 실행되는거 아닌가요 ㅠㅠ? done()에도 list에서 제거하라는 명령만 했는데..
    #59268

    codingapple
    키 마스터
    서버가 범인이 아니면 html이 범인입니다 
    삭제버튼 감싸고 있는 <form>태그나 <a>태그나 href=" " 같은게 있나 확인합시다 
    
9 글 보임 - 1 에서 9 까지 (총 9 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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