sequelize1
ORM?
- Object relation Mapping
- 어플리케이션과 db를 맵핑 시켜주는 도구
- 특정 DBMS에 종속되지 않음
개발환경 셋팅
환경 : intellij, mysq (visual studio code에서도 가능)
시작전 셋팅 필요 : 로컬mysql디비 필요
https://beanbroker.github.io/2018/08/21/etc/docker_mysql/
intellij 셋팅
-> new project, node
-> 프로젝트 생성후
-> Preference 열기
-> javascript검색
-> Languages & Frameworks의 javascript Language Version변경 EcmaScript6로(그래야 람다를 써도 빨간줄이 뜨지 않는다!)
[참고]
http://docs.sequelizejs.com/manual/installation/getting-started.html 참고
project setting
app.js
1 | var createError = require('http-errors'); |
routes 폴더
/routes/index.js
1
2
3
4
5
6
7
8
9 var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
/routes/users.js
1
2
3
4
5
6
7
8
9 var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;
package.json
1 | { |
3005 포트 사용 app.js에 추가
1
2
3 app.listen(3005, function(){
console.log('3005 port connected');
});
http://docs.sequelizejs.com/manual/installation/getting-started.html를 보면 아래와 같이 나와있다.1
2
3
4
5
6
7
8// Using NPM
$ npm install --save sequelize
# And one of the following:
$ npm install --save pg pg-hstore
$ npm install --save mysql2
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL
실제 install에 필요한 부분1
2
3
4
5
6
7$ npm install --save sequelize
$ npm install --save mysql2
위의 부분 실행 후
npm i -g sequelize-cli
sequelize init
sequelize init을 진행하게되면
- /config
- /models
- /migirations
폴더 생성이 되어진다 migrations는 필요없다.
/config/config.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 {
"development": {
"username": "root",
"password": null,
"database": "database_development",
"host": "127.0.0.1",
"dialect": "mysql"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
위의 내용을 자신의 디비에 맞게 변경하자1
2
3
4
5
6
7
8"development": {
"username": "root",
"password": "password",
"database": "study",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases" : false
}
/models/index.js기본 생성되어진 index.js변경
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'use strict';
const path = require('path');
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require(path.join(__dirname, '..', 'config', 'config.json'))[env];
const db = {};
const sequelize = new Sequelize(config.database, config.username, config.password, config);
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
Mysql을 연결해보자
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 const sequelize = require('./models').sequelize;
//테스트 커낵션
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
sequelize.sync();
sync - > 서버실행시 mysql 연결 및 연동
Executing (default): SELECT 1+1 AS result
Connection has been established successfully. 와 함께 로그가 확인되면 정상연결 확인.