Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Guest Book

  1. 관리자만 볼 수 있는 방명록입니다.

    1. 관리자만 볼 수 있는 댓글입니다.

    2. 너무 오래된 소스라서(6년되었군요.) 기억은 안나지만 오류메시지를 보니 오라클 드라이버를 연결을 못한것 같습니다. 오라클을 사용하니 당연히 오라클 디비가 필요하고 소스에서 해당 디비에 맞는 정보로 변경해 주셔야 합니다. 다른 디비를 사용하신다면 그에 맞는 jdbc 드라이버를 사용하셔야 하고요.

  2. 안녕하세요 오늘도 좋은하루입니다.
    책보다가 궁금한게 또 생겼는데요

    mysql의 사용법이 바뀐것 같은데요 홈페이지에서
    혹시나 변경된 예제 있을까 찾아봤는데 못찾아서 여기에 씁니다.

    변경된 방식대로 하니 EventEmitter안쓰는것 같은데
    맞나요?
    EventEmitter를 안쓰니 route/ index.js

    var client = mysql.createConnection
    이렇게 index.js에서 호출하고

    exports.getList= function(){
    client.query(query",[parameter],function(err,rows,fileds){
    if(err) throw err;
    console.log('result :', rows);
    });
    이렇게 사용해야되니
    EventEmitter 예제의 책처럼 분리가 안되는것 같습니다.
    제가 잘못알고 있는것 같은데 예제 없을까요?

    nodejs + express + mysql 에서
    route/index.js 에서
    var client = mysql.createConnection을 db.js 파일로 옮겨서
    client 클래스만 import해서 쓰고 싶은데
    자꾸 에러가 나서 여쭈어 봅니다

    1. 어떻게 바뀌었다고 하는지 잘 모르겠는데요. 흠..
      index.js에 getList가 있고 mysql.createConnection은 db.js에 있는건가요?

    2. 죄송합니다 질문이 횡설수설했습니다.

      express에서

      index.js 에
      requeir(./router/user)
      requeir(./router/story)
      ..
      ..

      get('/user/:id' , user.get)
      get('/story/:id' , story.get)
      -----

      /routes/ 아래에
      user.js , story.js 파일이 각각있습니다.

      현재
      user.js 에서도
      var client = mysql.createConnection
      exports.getList= function(){
      client.query(...)

      story.js 에서도
      var client = mysql.createConnection
      exports.getList= function(){
      client.query(...)

      이렇게 각 파일에서 디비 커넥션을 엽니다.

      제가 원하는건 책의 예제처럼
      db.js를 만들어

      user.js , story.js에서
      var client = mysql.createConnection 하지 않고
      db.js 에 생성하고
      쿼리까지 실행뒤 결과만 user.js에서 받고 싶은데요

      책에서는 실행한 데이터를 EventEmitter 로 받았는데
      node-mysql의 api가 변경되면서
      EventEmitter를 안쓰는 쪽으로 바뀐것 같아서


      제가 지금 구현한것처럼
      user.js, story.js에 createConnection()을 해서 작업하는게 맞는것인지 (지금잘돌아가긴하는데...) 커넥션을 이렇게 각각 연결하는게 맞는것인지? 아니면 db.js로 분리해서 커넥션은 하나만 만들어야 하는지 이게 궁금했습니다.

      https://github.com/yunchiri/NuanceShare

      여기에 연습중인 소스 올렸습니다
      아직 잘몰라서 질문이 길어졌습니다. 좋은밤되십시오

    3. 죄송합니다 잘되네요 ^^;; 삭제하려다가 혹시나 해서 리플로 달고 CLose하겠습니다.

    4. 주말에 바빠서 확인을 제대로 못하고 있었는데 해결되셨다니 다행이네요 ^^

  3. 관리자만 볼 수 있는 방명록입니다.

    1. 안녕하세요. 오랜만이네요... 이제 인턴아니시잖아요.. ㅎㅎ
      급 그렇게 되서 달리 인사도 못드리고 나왔네요... 열심히 하신만큼 좋은 결과 있을 겁니다. 화이팅이요 ㅎㅎ

  4. 안녕하세요 책보고 실습하다가 궁금한게 있습니다

    익스프레스와 mysql을 연결할때 개발모드|운영모드 환경설정에 따라
    ip,port를 다르게 하고 싶은데

    보통은 (가칭)envoriment.js 이런곳에 환경설정파일을 따로 만드나요?

    아니면 app.set('db_ip','127.0.0.1') 이런식으로 하고
    app.get('db_ip') 이런식으로 쓰나요?
    =>이경우 router/index.js에서 app 객체를 어떻게 불러오는지 잘모르겠습니다 ㅠㅠ
    서버에 올려 테스트할때마다 바꿔줘야되서 번거로워서 방법을 찾는데
    어떤식으로 하시는지 궁금합니다.

    =

    1. 이건 선호도 문제인데요.. 개인적으로 하는 프로젝트에서는 그냥 환경변수로 해결하는 편이고요. 업무처럼 개발과 운영모드를 따로 돌려야 한다면 환경변수에 기반해서 설정파일에서 불러오겠습니다. config.json이나 말씀하신 environment.json같은 설정파일을 만들고 읽어와서 환경변수(NODE_ENV)에 따라서 개발디비설정을 셋팅하거나 프로덕션을 셋팅하거나 그렇습니다.

      두번재 질문에서 app이 익스프레스 인스턴스같은데 웹프레임워크와 디비를 다루는 코드에 굳이 커플링을 줄 필요는 없어보입니다. 라우터에서 app객체를 불러온다는게 어떤 의미이신지는 모르겠지만 디비를 다루는 코드를 따로 작성할듯 합ㄴ디ㅏ.

    2. 감사합니다 좋은하루 되십시오

  5. 관리자만 볼 수 있는 방명록입니다.

    1. 계속 질문을 하시고 계신데 사실 첫 질문하신 뒤부터 달라지는 내용은 거의 없는것 같아서 좀 아쉽습니다. 메일로도 비슷한 내용을 보내주셨기에 여기에만 답변을 달겠습니다. 제가 답변 드린 내용은 찾아보시거나 테스트를 해보시고 다시 질문을 해주시는 건지도 궁금합니다. 사실 이런 식의 질문은 제가 해보진 않은 부분이기 때문에 직접 구현해 보거나(아니면 돌려볼 수 있는 코드가 있거나) 하지 않는한 대략적인 대답말고는 드릴 수 없습니다.

      1. 어디서 무슨 값을 받는다는 건지 잘 모르겠습니다.
      2. 이건 저번에 주신 질문과 동일한데 제가 드린 링크는 확인해 보셨나요?
      3. 웹소켓으로 받은 다음에 플레이는 오디오로 해야할것 같네요.
      4. 여기서 웹과 서버간이라고 하셨는데 웹이 뭔지 잘 모르겠습니다. 소켓 2개 열어서 데이터 보내는건 아무런 문제가 없습니다.

  6. 관리자만 볼 수 있는 방명록입니다.

    1. 문제가 발생할 수 있는 경우는 여러가지가 있기 때문에 단순히 로그만으로는 파악하기가 어렵네요. 좀더 자세한 내용을 주셔야 합니다. 버전이라든가... 아니면 재현해 볼 수 있는 예제소스 등이요.

      로그 메세지를 보면 클라이언트 쪽에서 연결이 끊기로 로그에도 연결을 닫아버린것 같은데 그럼에도 로그만 그렇게 나오고 계속 메시지는 정상적으로 주고 받을 수 있다는 말씀이신가요?