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

home2 게시판 Node.js, Express 게시판 server.js 코드 전문을 올려주실 수 있으실까요?

server.js 코드 전문을 올려주실 수 있으실까요?

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

    김성규
    참가자
    이미 올려주신게 있으시다면 링크 주시면 무척 감사하겠습니다!
    #41537

    codingapple
    키 마스터
    올려둔건 없습니다 안되는부분 올려주시면 됩니다
    #41662

    김성규
    참가자
    아 네네!
    
    로그인 부분에서 잘 되지 않아서 질문 드립니다!
    
    server.js 에서 모든 코드의 범위를
    
    
    MongoClient.connect('mongodb+srv://ID부분은가릴게요:r4roQYbZRN2oDjsL@cluster0.av3ut.mongodb.net/?retryWrites=true&w=majority',
    function(에러, client){
        app.use(bodyParser.urlencoded({extended : true}))
        if(에러) return console.log(에러)
        var db = client.db('study')
        app.listen(8080, function() {
            console.log('가동 주우우웅~')
        })
    
    의 안에 작성하였습니다. (해당 함수 범위 밖에서 작성하니 var db = client.db('study') 을 다른 요청들이 못찾는거 같더라구요 )
    
    login 에서는 해당 범위 밖에서 코드를 작성하시는 것 같아 그렇게 하였는데, Cannot get post 오류가 나길래(실패시 /fail 로 잡아놨는데, fail 페이지 작성은 안해놔서 그런 것 같아요) 
    
    범위 안에 넣어도 봤으나 문제가 해결되지 않아서요 ^^;
    
    
    login.ejs와 server.js 모두 코드를 복붙하여 보았으나 해결이 안되네요.. db도 login 부분 카피 하였습니다!
    
    write, edit 등 다른 기능은 잘 되는거 보면 디비 연결 문제는 아닌 것 같은데... 도움 얻을 수 있을까요?
    #41666

    김성규
    참가자
    생각해보니 코드 다 올려드리는 것이 나을 것 같아서 올리겠습니다!
    server.js와 login.ejs 입니다
    
    const express = require('express')
    const app = express()
    const bodyParser = require('body-parser')
    const MongoClient = require('mongodb').MongoClient
    const methodOverride = require('method-override')
    app.use(methodOverride('_method'))
    app.set('view engine', 'ejs')
    app.use('/public', express.static('public'))
    
    
    MongoClient.connect('mongodb+srv://아이디는가릴게요:r4roQYbZRN2oDjsL@cluster0.av3ut.mongodb.net/?retryWrites=true&w=majority',
    function(에러, client){
        app.use(bodyParser.urlencoded({extended : true}))
        if(에러) return console.log(에러)
        var db = client.db('study')
        app.listen(8080, function() {
            console.log('가동 주우우웅~')
        })
     
    app.get('/pet', function(요청, 응답){
        응답.send('펫용품 쇼핑 사이트')
    })
    app.get('/index', function(요청, 응답){
        응답.render('index.ejs')
    })
    app.get('/write', function(요청, 응답){
        응답.render('write.ejs')
    })
    app.post('/add', function(요청, 응답){
        db.collection('counter').findOne({name: '게시물갯수'}, function(에러, 결과){
            응답.send('전송완료');
            console.log(결과.totalPost)
            let 총게시물갯수 = 결과.totalPost
            db.collection('post').insertOne( { _id: 총게시물갯수 + 1 , 제목 : 요청.body.tt, 날짜 : 요청.body.dd } , function(){
                console.log('저장완료')
                db.collection('counter').updateOne({name: '게시물갯수'}, { $inc : {totalPost:1} }, function(에러, 결과){
                    if(에러) return console.log(에러)
                } )
              })
            })
      });
    app.get('/list', function(요청, 응답){
      var db = client.db('study')
        // 디비에 저장된 post라는 collection의 모든 데이터를 꺼내오기
        db.collection('post').find().toArray(function(에러, 결과){
            응답.render('list.ejs', {posts: 결과})
                                // 이런데이터를 : 이런이름으로
        })
    })
    
    
    app.delete('/delete', function(요청, 응답){
        console.log(요청.body)
        요청.body._id = parseInt(요청.body._id)
        db.collection('post').deleteOne(요청.body, function(에러, 결과){
            console.log('삭제완료')
            응답.status(200).send({ message : '성공해써요'})
        })
    })
    app.get('/detail', function(요청, 응답){
        db.collection('post')
        응답.render('detail.ejs')
    })
    app.get('/detail/:id', function(요청, 응답){
        db.collection('post').findOne({_id : parseInt(요청.params.id)}, function(에러, 결과){
            응답.render('detail.ejs', {data : 결과})
            console.log(결과)
        })
    })
    app.get('/edit', function(요청, 응답){
        응답.render('edit.ejs')
    })
    app.get('/edit/:id', function(요청, 응답){
        // 디비에 저장된 post라는 collection의 모든 데이터를 꺼내오기
        db.collection('post').findOne({_id : parseInt(요청.params.id)}, function(에러, 결과){
            응답.render('edit.ejs', {posts : 결과})
            console.log(결과)
        })
    })
    app.put('/edit', function(요청, 응답){
        db.collection('post').updateOne({_id: parseInt(요청.body.id)}, {$set: {제목 : 요청.body.title, 날짜: 요청.body.date}, function(에러, 결과){
            응답.redirect('/list')
        }})
    })
    })
    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    const session = require('express-session');
    app.use(session({secret : '비밀코드', resave : true, saveUninitialized: false}));
    app.use(passport.initialize());
    app.use(passport.session());
    
    
    app.get('/login', function(요청, 응답){
      응답.render('login.ejs')
    });
    app.post('/login', passport.authenticate('local', {failureRedirect : '/fail'}), function(요청, 응답){
      console.log('에러 어디냐구')
      응답.redirect('/')
    });
    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 (아이디, done) {
      done(null, {})
    });
    
    // server.js
    
    
    
    <!doctype html>
    <html>
      <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
      </head>
      <body>
        <%- include('nav.html') %>
         
        <div class="container mt-4">
            <form action="/login" method="POST">
              <div class="form-group">
                <label>아이디</label>
                <input type="text" class="form-control" name="id">
              </div>
              <div class="form-group">
                <label>비번</label>
                <input type="text" class="form-control" name="pw">
              </div>
              <button type="submit" class="btn btn-danger">로그인</button>
            </form>
          </div>
        <!-- Optional JavaScript -->
        <!-- jQuery first, then Popper.js, then Bootstrap JS -->
        <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://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
      </body>
    </html>
    #41683

    codingapple
    키 마스터
    var db;
    MongoClient.connect('mongodb+srv://어쩌구',
    function(에러, client){
        app.use(bodyParser.urlencoded({extended : true}))
        if(에러) return console.log(에러)
        db = client.db('study')
    
    이럽시다
    #41856

    김성규
    참가자
    바꾸어 보았지만 여전히 에러가 나네요.... 😭
    
    var db;
    
    MongoClient.connect('mongodb+srv://:r4roQYbZRN2oDjsL@cluster0.av3ut.mongodb.net/?retryWrites=true&w=majority',
    function(에러, client){
      app.use(bodyParser.urlencoded({extended : true}))
      if(에러) return console.log(에러)
      db = client.db('study')
    
    해당 코드의 closet 밖에 넣을 경우
    
    {failureRedirect : '/fail'}
    
    여기서 설정한 /fail 페이지로 넘어가는데,
    
    const passport = require('passport'); 로 시작하는 코드부터는 위 연결 함수의 안에 넣으면
    
    url 경로가 localhost:8080 페이지에서 Cannot get / 으로만 뜹니다 😭
    
    #41886

    codingapple
    키 마스터
    const 어쩌구도 var db 처럼 밖으로 다 빼야합니다
    #42073

    김성규
    참가자
    var db와
    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    const session = require('express-session');
    
    코드들도 다 밖에 있습니다! 여전히 오류가 나네유........ 😭
    (/fail 페이지로 넘어가면서 Cannot get /fail 뜨는데, /fail 페이지가 없어서 그런거 같아유)
    
    login.ejs 와 server.js login 부분의 코드들을 싹 복붙해봐도 안되는 마법이.....!
    
    
    #42116

    codingapple
    키 마스터
    Cannot get /fail 에러는 app.get('/fail' 어쩌구 하나 직접 만들어두면 됩니다
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 호 / 개인정보관리자 : 박종흠