Nodejs MySQL
MySQL

Connection(์ปค๋ฅ์
)
mysql.createConnection(DATABASE_CONFIG)
- host,port : DBMS ์ฃผ์์ ํฌํธ(Default 3306)
- user, password
- database
- multipleStatements : ๋์์ ์ฌ๋ฌ SQL ์คํ. ๋ณด์์ ์ฃผ์
- connectTimeout : DBMS ์ฐ๊ฒฐ ํ์ ์์ ์๊ฐ. Default 10,000 ms
connect
: ์ฐ๊ฒฐ
end
: ์ฐ๊ฒฐ ์ข
๋ฃ
query
: SQL๋ฌธ ์คํ์ ์ปค๋ฅ์
์๋ ์ฐ๊ฒฐ
connection.connect(function(err){
if(err){
console.error('error connecting'+err.stack);
return;
}
connection.end();
})
Connection Pool
- ๋ค์์ Connection ๊ด๋ฆฌ ๊ธฐ๋ฒ
- Pool์์ Connection ์ป์ด์ ์ฌ์ฉํ๊ณ Pool์ ๋ฐ๋ฉ
mysql.createPool(option)
waitForConnections
: ํ์ ์ฌ์ ์ปค๋ฅ์
์ด ์๋ ๊ฒฝ์ฐ ๋๊ธฐ ์ฌ๋ถ
connectionLimit
: ์ต๋ ์ปค๋ฅ์
๊ฐ์, ๊ธฐ๋ณธ 10๊ฐ
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 Pool
pool.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๋ฅผ ํตํด ์ ๊ฑฐ ํ ์ ์๋ค.
}
);
Model Create
User.create({
sso_id: 'testNodejs',
account_bank: 'testNodejs',
account_number: 'testNodejs',
name:'testNodejs',
password:'testNodejs'
}).then(resolved,rejected);

Model Read
User.findAll({
attributes: ['sso_id','account_bank'],
where:{
sso_id:'testNodejs'
}
}).then(resolved,rejected);

Model Update
User.update({
sso_id: 'testNodejsUpdate',
},{
where:{
sso_id:'testNodejs'
}
}).then(resolved,rejected);

Model DELETE
User.destroy({
where:{
sso_id:'testNodejsUpdate'
}
}).then(resolved,rejected);
