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

home2 게시판 Node.js, Express 게시판 코드 상단에서 할당하는 var db 범위가 궁금합니다

코드 상단에서 할당하는 var db 범위가 궁금합니다

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

    김성규
    참가자
    var db;
    MongoClient.connect(url블라블라,
    function(에러, client){
        app.use(bodyParser.urlencoded({extended : true}))
        if(에러) return console.log(에러)
        db = client.db('study')
        app.listen(8080, function() {
            console.log('listening 8080')
        })
    })
    해당 코드에서 var db를 전역변수로 선언 후, db 할당은 해당 코드 내에서 한 후,
    
    강의 진행하시다가 로그인 검증에서 라이브러리 passport 사용을 위해
    
    db = client.db('study')
    
    가 선언된 해당 코드의 밖에서 코드를 작성하신 후 그 밑에
    
    /register, /add, /delete 등의 요청들은 passport 밑에 오게 되는데,
    (db = client.db('study') 가 선언된 범위 밖)
    
    해당 요청들의 처리를 위해  db.collection 구문을 쓰는데 이 때 db를 선언한 범위 밖에서 사용하다보니 해당 처리가 DB와 연결이 되지 않습니다.
    
    db연결을 위한 변수 선언 및 할당된 범위 밖에서 어떻게 처리 구문들을 사용하실 수 있는건지 궁금합니다
    
    
    #44534

    codingapple
    키 마스터
    밖에서 만든 변수는 모든 곳에서 사용가능합니다 
    함수안에서 수정해도 밖에서 만든 변수기 때문에 모든 곳에서 사용가능합니다
    #44626

    김성규
    참가자
    저의 경우 register, add 등 기능 추가 후
    
    MongoClient.connect('mongodb+srv://apatheia12: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')
        app.listen(8080, function() {
            console.log('listening 8080')
        })
      })
    
    해당 코드 안에 두면 작동하는 레지스터가
    
    해당 코드 밖으로 빼서 passport 라이브러리 하단에 작성하면
    
    TypeError: Cannot read properties of undefined (reading 'id')
    
    에러와 함께 안되네요... 
    
    db.collection('login').insertOne( {id : 요청.body.id, pw : 요청.body.pw }
    
    해당 부분에서 DB와 연결이 안되어있어서 id를 못 찾는 것으로 생각되어 다시 db=client('study') 가 있는 위 코드 안에 넣으니 작동됩니다..
    
    이유가 뭘까요 😭
    
    login도 해당 코드 밖에 작성하면 작동을 안하네유.....
    
    그런데 똑같이 디비에서 읽어오는 list 페이지는 또 잘 나와요 ㅋㅋㅋㅋ.. ㅠㅠㅠㅠㅠ 대체 왜.....?
    
    #44651

    codingapple
    키 마스터
    그 에러는 id 왼쪽에 있는 요청.body가 텅비었다는 소리입니다
    html파일에서 폼태그 이용해서 서버로 잘 보냈나 확인하거나 
    app.use(express.urlencoded({ extended: true })); 이런거 잘 있나 확인합시다
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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