node.js 에서 mysql 모듈 사용 중입니다. connect, end 또는 release 사용법에 대해서.

조회수 6080회

1.

var mysql = require('mysql');
var conn = mysql.createConnection(dbconfig.connection);
conn.connect(function(err) {
    if (err) {
      console.log('Error connecting: ' + err.stack);
      return;
    }

    console.log('connected as id ' + conn.threadId);
  });

  conn.query('USE ' + dbconfig.database);

위 코드를 .js 파일 제일 처음에 작성하고,

conn.end(); // 또는
conn.release();

로 db 처리를 끝냅니다.

그런데,

Error: Cannot enqueue Query after invoking quit.

같은 에러가 발생하여서 db 연결 열고, 닫고를 잘못했나 싶습니다.

2.

웹 개발할 때 ( node.js ) 로그인 정보 관련 보안은 어떻게 처리해야 하나요.

예를 들면,

nodemailer 모듈을 사용할 때

var smtpTransport = nodemailer.createTransport('SMTP', {
        service : 'Gmail',
        auth : {
          user : 'email@test.com',
          pass : 'email1234!'
        }
      });

에서 user, pass 정보를 .js 파일에 단순히 저장해도 보안상 문제 없는 방법인지,

또는 mysql 모듈을 사용할 때,

module.exports = {
    'connection': {
        'host': '127.0.0.1',
        'user': 'root',
        'password': 'admin1234'
    },
    'database': 'test',
  'user_table': 'tb_test'
};

와 같이 .js 파일로 config 형식으로 저장하여 불러와 사용해도 되는지요.

웹 개발할 때 사용자 정보 처리에 대해 궁금합니다.

  1. mysql 모듈 사용시 db 연결 해제에 대해 처리 위치 또는 방법
  2. db 또는 이메일 접속 사용자 정보에 대해 보안 관련 처리 방법
  • 1번 문제 같은 경우는 비동기 방식에서 db연결이 먼저 닫히는 문제 같습니다. 연결을 닫을 때 쿼리가 완전히 실행 되고, 그러니깐 실행 후 콜백 형태로 닫아지게 하면 됩니다. 아니면 그냥 아예 close 를 하지 말아보세요. Manki Kim 2016.5.30 18:53
  • 이런게 비동기 방식의 어려움인가봐요.ㅠ 의견 감사드립니다. 상남자 2016.5.31 01:20

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)