본문 바로가기
Database/MySQL

[MySQL] Node js에서 SQL과 동적으로 매핑하는 방법

by 발담그는블로그 2022. 3. 22.

기본 하드코딩

var clubSn = req.params.clubSn;
var sql = 'SELECT * FROM CLUB WHERE CLUB_SN = "' + clubSn + '";';
dbconn.query(sql, function(err, results, field){
	....
});

 

파라미터 1개일 때 매핑

var clubSn = req.params.clubSn;
var sql = 'SELECT * FROM CLUB WHERE CLUB_SN = ?';
dbconn.query(sql, clubSn, function(err, results, field){
	...
});

 

파라미터 2개이상일 때

var clubSn = req.params.clubSn;
var clubNm = req.params.clubNm;
var sql = 'SELECT * FROM CLUB WHERE CLUB_SN = ? AND CLUB_NM = ?';
dbconn.query(sql, [clubSn, clubNm], function(err, results, field){
	...
});
var insertValArr = ['a','b','c','d'];
var sql = "INSERT INTO CLUB_MBER (CLUB_SN, MBER_NM, MBER_SN, MNGR_YN) VALUES ?";
dbconn.query(sql, insertValArr, function(err, result){
	...
});

 

Insert SQL시, 입력할 파라미터가 매우 많을 경우

파라미터를 객체형식으로 만들어서 넘기면 된다. 단, key값은 무조건 db에 있는 필드명과 똑같이 만들어야 한다.

var clubMberObj = {
  CLUB_SN : clubSn,
  MBER_NM : mberNm,
  MBER_SN : mberSn,
  MNGR_YN : 'Y',
  PROFILE_IMAGE : profileImage
};

//클럽회원 저장
var sql = "INSERT INTO CLUB_MBER SET ? "

dbconn.query(sql, clubMberObj, function(err, result){
	...
});

 

다중쿼리 처리 방법

var sql1 = 'SELECT CLUB_NM FROM CLUB; '; // 클럽목록
var sql2 = 'SELECT MBER_NM FROM CLUB_MBER; '; // 클럽회원

dbconn.query(sql1 + sql2, function(err, results, field){
  var sql1_result = results[0];	//sql1 의 결과값
  var sql2_result = results[1];	//sql2 의 결과값

	...
});
//대회생성
insert : function(req, res){

  var cnfrncInfo = req.body.cnfrncInfo;	//대회정보
  var partcptMberArr = req.body.partcptMberArr; //대회참가자정보
  var cnfrncGgArr = req.body.cnfrncGgArr;	//대회경기정보

  var sql1 = 'INSERT INTO CNFRNC SET ? ;';
  var sql1s = mysql.format(sql1, cnfrncInfo); 

  var sql2 = 'INSERT INTO CNFRNC_PARTCPT_MBER SET ?;';
  var sql2s = "";
  partcptMberArr.forEach(function(item){
  	sql2s += mysql.format(sql2, item);
  });  

  var sql3 = 'INSERT INTO CNFRNC_GG SET ?;';
  var sql3s = "";
  cnfrncGgArr.forEach(function(item){
  	sql3s += mysql.format(sql3, item);
  });  

  dbconn.query(sql1s + sql2s + sql3s, function(err, result){

    if(err){
      console.error(err);
      res.send({resultCd:'E', msg: "예기치 않은 오류가 발생하여 대회 생성에 실패하였습니다."});
      throw err;
    }

    if(result[0].affectedRows > 0){
      res.send({resultCd:'S', msg:'정상적으로 대회가 만들어졌습니다.'});
      
    }else{
      console.error(result.message);
      res.send({resultCd:'E', msg: "예기치 않은 오류가 발생하여 대회 생성에 실패하였습니다. " + result.message});
    }

  });

}

 

다중쿼리 추가 참고 사이트

https://github.com/mysqljs/mysql

 

GitHub - mysqljs/mysql: A pure node.js JavaScript Client implementing the MySQL protocol.

A pure node.js JavaScript Client implementing the MySQL protocol. - GitHub - mysqljs/mysql: A pure node.js JavaScript Client implementing the MySQL protocol.

github.com

 

 

출처: https://junspapa-itdev.tistory.com/10

반응형