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

home2 게시판 Node.js, Express 게시판 .env 파일만들고 나서부터 망쳤어요

.env 파일만들고 나서부터 망쳤어요

  • 이 주제에는 1개 답변, 2명 참여가 있으며 codingapple2 년 전에 전에 마지막으로 업데이트했습니다.
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #87510

    리아
    참가자
    .env 파일 만들고 나서부터 갑자기 에러가 떠서 다시 원상복구했는데 뭘 잘못 건드려서 여기저기 바꾸다보니 이렇게 됐어요 ㅠ
    현재 글번호가 object id 로 뜨고 delete 가 안되는 등의 에러가 있습니다
    검색기능만들기 1 직전에 코드를 볼 수 있을까요? 아니면 문제가 보이시나요? 제가 하도 여기저기 바꿔서요 ㅠ
    
    server.js
    
    const express = require('express');
    const app = express();
    const bodyParser = require('body-parser');
    app.use(bodyParser.urlencoded({ extended: true }));
    const MongoClient = require('mongodb').MongoClient;
    const methodOverride = require('method-override')
    require('dotenv').config()
    app.use(methodOverride('_method'))
    app.set('view engine', 'ejs');
    var db;
    MongoClient.connect("mongodb+srv://adminChung:******@cluster0.g8ddnxu.mongodb.net/?retryWrites=true&w=majority", function(err, client){
    if (err) {
    console.log(err);
    return;
     }
    db = client.db('TodoApp');
    app.listen(8080, function() {
    console.log('listening on 8080');
     });
    });
    app.use('/public', express.static('public'))
    
    
    app.get('/pet', function(req, res) {
    res.send('petshop');
    });
    app.get('/beauty', function(req, res) {
    res.send('this is the best beauty store.');
    });
    app.get('/', function(req, res) {
    res.render('index.ejs');
    });
    app.get('/home', function(req, res) {
    res.render('index.ejs');
    });
    app.get('/write', function(req, res) {
    res.render('write.ejs');
    });
    
    
    app.post('/add', function (요청, 응답) {
    db.collection('counter').findOne({name : '게시물갯수'}, function(에러, 결과){
    var 총게시물갯수 = 결과.totalPost
    db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.제목, 날짜 : 요청.body.날짜 }, function (에러, 결과) {
    db.collection('counter').updateOne({name:'게시물갯수'},{ $inc: {totalPost:1} },function(에러, 결과){
    if(에러){return console.log(에러)}
    응답.send('전송완료');
     })
     })
     })
    })
    app.get('/list', function(req,res){
    db.collection('post').find().toArray(function(error,result){
    console.log(result);
    res.render('list.ejs',{posts: result});
     }); 
     
    });
    app.delete('/delete', function(req, res) {
    var postId = parseInt(req.body._id); 
    db.collection('post').deleteOne({ _id: postId }, function(error, result) {
    if (error) {
    console.log('MongoDB error:', error);
    return;
     }
    console.log('삭제완료');
    res.send('삭제완료');
     });
    });
    app.get('/detail/:id', function(요청, 응답){
    db.collection('post').findOne({ _id : parseInt(요청.params.id) }, function(에러, 결과){
    if (에러) {
    console.log(에러);
    res.send('Error occurred');
    return;
     } 
    응답.render('detail.ejs', {data : 결과} );
     });
    });
    app.get('/edit/:id',function(req,res){
    db.collection('post').findOne({_id : parseInt(req.params.id)}, function(error,result){
    res.render('edit.ejs', {post : result})
    console.log(result)
    })
    })
    app.put('/edit', function(req,res){ // submit 누르면 새로운 데이터를 업데이트
    db.collection('post').updateOne({_id : parseInt(req.body.id)},{$set : { 제목 : req.body.제목, 날짜 : req.body.날짜}},function(error,result){
    console.log('수정완료')
    res.redirect('/list')
     })
    });
    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    const session = require('express-session');
    app.use(session({secret : 'secret', resave : true, saveUninitialized: false}));
    app.use(passport.initialize());
    app.use(passport.session()); //app.use : 미들웨어. 요청-응답 중간에 뭔가 실행
    app.get('/login', function(req,res){
    res.render('login.ejs')
    });
    app.post('/login', passport.authenticate('local', {
    failureRedirect : '/fail'
    }), function(req,res){
    res.redirect('/')
     });
    app.get('/mypage', didLogin, function(req,res){
    console.log(req.user); //아이디 비번 프린트
    res.render('mypage.ejs', {사용자 : req.user})
    });
    function didLogin(req,res,next){
    if(req.user){
    next();
     }
    else{
    res.send('Log in first.')
     }
    }
    passport.use(new LocalStrategy({
    usernameField: 'id',
    passwordField: 'pw',
    session: true,
    passReqToCallback: false,
     }, function (입력한아이디, 입력한비번, done) {
    console.log(입력한아이디, 입력한비번);
    db.collection('login').findOne({ id: 입력한아이디 }, function (에러, 결과) {
    if (에러) return done(에러)
    if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
    if (입력한비번 == 결과.pw) {
    return done(null, 결과)
     } else {
    return done(null, false, { message: '비번틀렸어요' })
     }
     })
     }));
    passport.serializeUser(function(user, done){
    done(null, user.id)
     });
    passport.deserializeUser(function(id,done){
    //디비에서 user.id 로 유저를 찾고 유저 정보를 밑에 {}에 넣음
    db.collection('login').findOne({id : id}, function(error,result){
    done(null,result)
     })
     
     });
    
    list.ejs
    
    <!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">
    <title>Document</title>
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <!-- CSS styles for the navbar -->
    <style>
    .navbar {
    background-color: #f1f1f1;
    padding: 10px;
     }
     
    .navbar ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
     }
     
    .navbar li {
    float: left;
     }
     
    .navbar li a {
    display: block;
    color: black;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
     }
     
    .navbar li a:hover {
    background-color: #ddd;
     }
    </style>
    </head>
    <body>
    <h4> 서버에서 가져온 할일 리스트 </h4>
    <div class="container input-group mb-2">
    <input class="form-control">
    <button class="input-group-append btn btn-danger">검색</button>
    </div>
    <div class="container mt-3">
    <ul class="list-group">
    <% for (var i = 0; i < posts.length; i++){ %>
     
    <li class="list-group-item">
    <p>글번호: <%= posts[i]._id %></p>
    <h4 class="detail" data-id="<%= posts[i]._id %>">할일 제목: <%= posts[i].제목 %></h4>
    <p>할일 마감날짜: <%= posts[i].날짜%></p>
    <button class="delete" data-id="<%= posts[i]._id %>">삭제</button>
    
    <% } %>
    
     
    </div>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <!-- Bootstrap JavaScript -->
     
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <script>
    $('.delete').click(function(e){
    var 글번호 = e.target.dataset.id;
    $.ajax({
    method : 'DELETE',
    url : '/delete?id='+ 글번호,
     }).done(function(result){
    //AJAX 성공시 실행할 코드는 여기
    console.log(result);
     }).fail(function(error){
    console.log(error);
     });
     });
    $('.detail').click(function(e){
    var taskID = e.target.dataset.id;
    $.ajax({
    method : 'GET',
    url : '/detail/' + taskID,
     
     }).done(function(result){
    //AJAX 성공시 실행할 코드는 여기
    console.log(result);
     }).fail(function(error){
    console.log(error);
     });
     });
     
    </script>
    </body>
    </html>
     
    #87544

    codingapple
    키 마스터
     무얼하면 어떤 에러가 뜹니까
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 호 / 개인정보관리자 : 박종흠