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

home2 게시판 Node.js, Express 게시판 라우터 분리 후 ajax 요청이 안먹습니다

라우터 분리 후 ajax 요청이 안먹습니다

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

    김민수
    참가자
    라우터로 분리하고 MongoClient.connect 를 쓰기위해 app.db = db;설정하고
     req.app.db.collection 이런식으로 가져다가 썼는데 
    리스트 추가는 되는데 ajax로 요청한 삭제는 적용이 안되네요....ㅠㅠ
    근데 서버js에서는 또 되고요 라우터에서 쓰고 싶은데 방법이 있을까요??
    
    router.delete("/delete", (req, res)=>{
        req.app.req.body._id = parseInt(req.body._id);
        db.collection("todotask").deleteOne(req.body, (err, result)=>{
           
        })
        res.send("삭제완료")
    })
    
    
    #62516

    codingapple
    키 마스터
    req.app.req.body._id 를 req.body._id로 바꿔봅시다
    #62523

    김민수
    참가자
    선생님 req.body._id 를 적용해도 안됩니다 ㅠㅠ
    
    
    router.delete("/delete", (req, res)=>{
        req.body._id = parseInt(req.body._id);
        db.collection("todotask").deleteOne(req.body, (err, result)=>{
        })
    })
    
    
    
    
    $(".delete").click(function(e){
                    let num = e.target.dataset.id;
                    let on1 = $(this);
                    $.ajax({
                        method : "DELETE",
                        url : "/delete",
                        data : {_id : num }
                    }).done(function(result){
                        
                        on1.parent("li").fadeOut()
                        location.reload()
                    })
                }) .fail(function(xhr,textStatus,errorThrown){//실패 했을 경우 원인 분석
                console.log(xhr,textStatus,errorThrown)
            }) 
    
    #62596

    codingapple
    키 마스터
    res.send("삭제완료")는 윗줄로 옮깁시다
    #62603

    김민수
    참가자
    그래도 안됩니다.
    
    routes => todo/js
    
    
    const express = require("express");
    var moment = require('moment-timezone');
    moment.tz.setDefault("Asia/Seoul");
    const app = express();
    const router = express.Router();
    router.get("/", (req,res)=>{
        console.log("--------todo------");
        req.app.db.collection("todotask").find().toArray((err, result)=>{
            console.log(result)
            res.render("todo",{todotasks: result})
        })
        
    })
    //작성
    router.post("/write" , (req, res)=>{
        req.app.db.collection('counter').findOne({name: "게시글"}, (err,result)=>{
            var total = result.totalPoint
            console.log(req.body.content) 
            req.app.db.collection("todotask").insertOne({_id : total + 1, content : req.body.content},(err, result)=>{
                req.app.db.collection("counter").updateOne({name:"게시글"},{$inc: {totalPoint : 1}},(err,result)=>{
                    if(err){return console.log(err)}
                    
                })
                res.redirect("/todo");
        })
        })
        
    })
    router.get("/edit/:id", (req,res)=>{
        
        req.app.db.collection("todotask").findOne({_id :parseInt(req.params.id)}, (err, result)=>{
            console.log(result)//에러코드 꼭 작성하기
            res.render("edit.ejs",{todotasks: result})
        })
        
    })
    router.delete("/delete", (req, res)=>{
        req.body._id=parseInt(req.body._id);
        req.app.db.collection("todotask").deleteOne(req.body, (err, result)=>{
            res.send("삭제완료")
        })
        
    })
     
    module.exports = router;
    
    
    
    
    routes => index.js
    
    
    const express = require("express");
    const app = express();
    const router = express.Router();
    //Main 
    router.get("/", (req, res)=>{
        res.render("main");
    });
    //Todo Router
    const TodoRouter = require("./todo");
    //chat
    const ChatRouter = require("./chat/chat")
    //game
    const GameRouter = require("./game/game")
    // Refactoring
    router.use("/todo" , TodoRouter);
    router.use("/chat", ChatRouter);
    router.use("/game", GameRouter)
    module.exports = router;
    app.js 
    
    //모듈
    const express = require("express");
    const bodyParser = require("body-parser");
    const MongoClient = require("mongodb").MongoClient;
    const path = require("path");
    const methodOverride = require('method-override')
    //서버
    const app = express(); //4000: todo
    const chatApp = express(); //4001: chat
    //채팅 서버 세팅
    const http = require("http").createServer(chatApp);
    const io = require("socket.io")(http);
    module.exports = io;
    chatApp.set("view engine", "ejs");
    chatApp.engine("html", require("ejs").renderFile);
    chatApp.set("views", path.join(__dirname, 'views'));
    chatApp.use("/public", express.static(__dirname + '/public'));
    //setting -view , static ,body parser
    app.set("view engine", "ejs");
    app.set("views", path.join(__dirname, 'views'));
    app.engine("html", require("ejs").renderFile);
    app.use("/public", express.static(__dirname + '/public'));
    app.use(methodOverride("_method"))
    app.use(express.urlencoded({extended: true}))
    //Router Setting
    const router = require("./routes/index");
    chatApp.use(router);
    app.use("/",router)
    // Chat Server Open
    http.listen(4001, () => {
        console.log("Chat Server listening on port 4001!");
    })
    //connet to DB
    var db;
    MongoClient.connect("mongodb+srv://user_06:admin06@cluster0.zgcjhqh.mongodb.net/?retryWrites=true&w=majority",(err,client)=>{
        if(err) return console.log("----error----");
        db = client.db('todoapp')
        app.db = db;
        app.listen("4000", ()=>{
            console.log("listening on 4000")
        })
    })
    
    
    router.put("/edit", (req,res)=>{
        db.collection("todotask").updateOne({_id: parseInt(req.body.id)},{$set : {content : req.body.content}},(err, result)=>{
            if(err){
                console.log("---------puterr-------")
            }
            console.log("수정완료")
            res.redirect("/todo")
        })
    })
    
    
     
     
     
    
    
    
    
    		
    	
    #62607

    김민수
    참가자
    라우터폴더에서 put 과 delete 가 안먹고 이걸 라우트 말고 메인서버에만 올려야 먹습니다.....
    선생님이 말씀하신대로 다 해봤지만 계속 안먹히네요 ㅠㅠ
    #62689

    codingapple
    키 마스터
    delete요청받으면 req.body는 의도대로 잘 출력되나 확인해봅시다 
    안되면 post요청으로 바꾸면 됩니다
    #62862

    김민수
    참가자
    다른 사람들은 되는거 같은데 답답하네요 ㅠㅠ
    #62900

    codingapple
    키 마스터
    post요청은 잘 되면 일단 post요청으로 바꿔서 진행하면 됩니다
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 호 / 개인정보관리자 : 박종흠