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

home2 게시판 Node.js, Express 게시판 PART 3, db연결 database.js 파일로 따로 빼는 부분 질문입니다.

PART 3, db연결 database.js 파일로 따로 빼는 부분 질문입니다.

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

    이아인
    참가자
    (app.js) 
    let db; 
    const url = process.env.DB_URL; 
    new MongoClient(url).connect().then((client) => { 
      console.log("DB연결성공"); 
      db = client.db("forum"); 
      app.listen(process.env.PORT, () => { 
        console.log("Server has opened.");
      }); 
    }) 
    .catch((err) => { 
      console.log(err); 
    });
    

    <hr />

    라우터 분리하는 강좌에서 질문입니다.
    router.js로 분리한 파일에는 db관련한 코드가 없는데 이를 어떻게 해결할 것인가에서 
    파일마다 db코드를 복붙하면 그 파일들이 모두 db연결을 다시 하기 때문에 db에 부담이 가서 비추인 걸로 이해했는데요,
    db부분을 파일로 따로 빼서 분리한 후 require하는 것도 어차피 마찬가지 동작이 아닌지 궁금합니다.
    
    (database.js) 
    const { MongoClient, ObjectId } = require("mongodb"); 
    const url = process.env.DB_URL; 
    let connectDB = new MongoClient(url).connect() module.exports = connectDB
    
    이 database.js를 라우터 파일들에서 require해서 connectDB로 실행시키면, 어차피 위에서 언급한 
    파일마다 db코드를 복붙해 넣어서 매 파일마다 db연결이 다시 실행되는 것과 같은 결과가 아닌가요?
    중복을 피하기 위해 이렇게 사용한다는 것은 이해되는데 이게 일일히 복붙해 넣는 것과 
    require하는 것이 db에 주는 영향이 어떻게 다른지 알려주실수 있나요?
    #113620

    codingapple
    키 마스터
    import나 require해서 같은 파일 여러번 가져다써도 그 파일은 1회만 실행됩니다
    #113637

    이아인
    참가자
    조금 이해가 안가는데요, 예를 들어 app.js, router1.js, router2.js 이렇게 세개의 파일이 모두 database.js파일을 
    require해서 DB관련 내용을 처리하고 있다고 가정할 때, router1.js도 실행하고 router2.js도 실행시켜도 
    database.js파일의 내용이 최초 app.js에서 실행된 이후 새롭게 또 실행되지는 않는다는 말씀인가요??
    #113650

    codingapple
    키 마스터
    #113660

    이아인
    참가자
    ㅇㅂㅇ
    놀랍네요!
    이건 node.js가 알아서 처리해주는 건가요?
    #113695

    codingapple
    키 마스터
    그렇습니다
6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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