var mysql = require('mysql');var dbConfig = { host: 'localhost', user: 'root', password: '1234', port: 3306, database: 'nelp' connectionLimit : 50};var pool = mysql.createPool(dbConfig);// Get Connection in Poolpool.getConnection(function(err,connection){ if(!err){ //connected! } // 커넥션을 풀에 반환 connection.release();});
SQL 실행
connection.query(sql,callback);
affectedRow : 영향을 받은 열의 개수
insertID : 새로 추가한 경우 Primary Key
changedRow : 변경된 열의 수
placeholder
SQL Injection 방지
mysql.escape()
placeholder 사용하기
Transcation
conn.beginTransaction(CB);
conn.commit(); : Transcation 변경 확정
conn.rollback(); : Transcation 복구
Sequelize
ORM : 객체와 모델의 Mapping
Promise 기반
npm install sequelize
사용하기
데이터베이스 연결 설정
모델 설정
모델을 이용해서 데이터 저장
모델에서 데이터 얻어오기
모델을 이용해서 데이터 수정/삭제
연결설정
new Sequelize(uri, option)
dialect : 데이터베이스 종류
host,port
pool : 커넥션 풀 설정
Local Connection
var Sequelize = require('sequelize');var sequelize = new Sequelize('nelp', 'root', 'csedbadmin');
Remote Host Connection Pool
var Sequelize = require('sequelize');var sequelize = new Sequelize('nelp', 'root', 'csedbadmin',{ dialect:'mysql', host:'RDB_ADDRESS', port:3306, pool:{ max:10, min:0, idle:10000 }});
Model Define
sequelize.define('name',{attributes}, {options})
var User = sequelize.define('user', { sso_id: {type: Sequelize.STRING, primaryKey: true}, account_bank: {type: Sequelize.STRING}, account_number: {type: Sequelize.STRING}, name: {type: Sequelize.STRING}, password: {type: Sequelize.STRING} }, { freezeTableName: true, // Table이름이 변경된다면 이 옵션을 주면 해결할 수 있다. timestamps: false, // timestamp Default Value가 true이므로 자동으로 입력되는 경우가 있는데 false를 통해 제거 할 수 있다. });