공부하는 블로그

Node.js | Node.js - MySQL : Multiple Statements 본문

Node.js

Node.js | Node.js - MySQL : Multiple Statements

치킨닮은닭 2020. 1. 18. 18:16

Multiple Statements

 비동기 방식을 따르는 Node.js에서는 다중 쿼리를 처리하려면 하나의 쿼리문을 처리 후 콜백 함수를 계속 사용해서 처리해야 한다. 그러나 쿼리가 많아질수록 코드가 복잡해지므로 이를 간단히 하기 위해 mysql 모듈에는 다중쿼리를 한번에 처리할 수 있도록 지원한다.

 

1. mysql 모듈을 사용하기 위해 임포트

const mysql = require('mysql');

 

 

2. DB 연결 객체 생성

const connection = mysql.createConnection( {
  host: 'ip',
  port: 'port_number',
  user: 'user_name',
  password: 'pwd',
  database: 'db_name',
  multipleStatements: true  // 다중쿼리용 설정
})

 

3. DB 연결

connection.connect();

 

 4. 다중 쿼리 정의

  예시로 다중 insert문을 정의해보았다. 각 쿼리의 파라미터 매핑(mapping)은 'mysql.format()'을 이용하였다.

 

const users_arr = [
  { id: 'kimkim1', pwd: '123', name: 'kim' },
  { id: 'leelee2', pwd: '456', name: 'lee' },
  { id: 'baebae3', pwd: '789', name: 'bae' }
]

const sql = "insert into user(id, pwd, name) values (?, ?, ?); ";
let sqls = "";
let params = [];

user_arr.map( user => {
  params = [user.id, user.pwd, user.name];
  sqls += mysql.format(sql, params);
} );

 

5. 다중 쿼리 실행

 다중 select문을 실행할 경우 result에 단일 쿼리의 조회 결과가 순차적으로 배열 요소로 저장이 된다. 즉, index가 0인 배열의 요소로 첫 번째 쿼리의 실행 결과가, index가 1인 배열의 요소로 두 번째 쿼리의 실행 결과가 담기게 된다. 각 단일 쿼리의 실행 결과도 배열이므로 result는 이중배열 구조를 가지게 된다. 

connection.query(sqls, (err, [result]) => {
  // logics
});

 


Reference

 

· https://junspapa-itdev.tistory.com/10

'Node.js' 카테고리의 다른 글

Node.js | Node.js - MySQL : 연동하기  (16) 2019.12.28
Node.js | Express : Template Engine  (0) 2019.12.28
Node.js | Express : Request Parameters  (0) 2019.12.23
Node.js | Express : Routing  (0) 2019.12.19
Node.js | Express : Intro  (0) 2019.12.19
Comments