오늘은 시퀄라이즈를 사용할 것이다.
MySQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리다
시퀄라이즈는 ORM으로 분류됩니다.
ORM은 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다.
시퀄라이즈 사용법을 배워야한다.
이건 쿼리를 직접만들지 않아도, 자바스크립터에서 모듈을 깔아서 API를 써서 바로 접근할 수 있게 해준다.
---
먼저 비주얼 코드에서 폴더하나를 만들어준다..
폴더 들어와서 초기화 해주기
app.js 만들어주기
시퀄라이즈드에 필요한 두 가지 설치해주기
npm init -y
npm i express
npm i mysql2
npm i sequelize
npm i nodemon
npm i sequelize-cli -g
깔아주기
기본적 서버 설정
----
시퀄라이즈드 하기
app 에서 시퀄라이즈 적용 시키고 mtsql과 연결하기
const express = require('express');
const app = express();
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize('mysql', 'root', 'qwer1234', {
host: 'localhost',
dialect: 'mysql',
});
app.get('/', (req, res) => {
res.end('hello wolrd');
})
app.get('/connectdb', (req, res) => {
connect();
res.end('db connection test....');
})
async function connect() {
try {
await sequelize.authenticate(); // 접속대기
console.log('connected');
} catch (err) {
console.log('err')
}
}
app.listen(3000, () => {
console.log('sever 3000 starting')
})
const { Sequelize } = require('sequelize');
시퀄라이즈를 가져운다.
const sequelize = new Sequelize('mysql', 'root', 'qwer1234', {
host: 'localhost',
dialect: 'mysql',
});
시퀄라이즈를 만들어줘서 내 sql과 연결 시켜준다.
async function connect() {
try {
await sequelize.authenticate(); // 접속대기
console.log('connected');
} catch (err) {
console.log('err')
}
}
connect 펑션을 만들어준다.
try = 정상 접속시
catch = 오류시
app.get('/connectdb', (req, res) => {
connect();
res.end('db connection test....');
})
/connectdb 들어오면
connect 매서드 소환해주고,
res.end를 해준다.
기본적인 접속 테스트 완료
-----
sequelize -cli 초기화 해주기
sequelize init 입력해주면
초기화해주면 config 파일이 생긴다.
비밀번호 내껄로 바꾸고
타임존
디벨롭먼트에 "timezone" : "+09:00" 에 추가해준다.
{
"development": {
"username": "root",
"password": "123456",
"database": "sequelize_db",
"host": "127.0.0.1",
"dialect": "mysql",
"timezone": "+09:00"
},
"test": {
"username": "root",
"password": "123456",
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": "123456",
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
},
"define": {
"charset" :"utf8",
"collate" :"utf8_bin",
"timestamps": true
}
}
초기화
-----
npm i sequelize-auto 설치 (도와주는 툴)
시퀄라이즈를 오토에 맞춰 줄 것이다 .
자바스크립터를 만들면 자바스크립터에서 테이블이 만들기 위해서 auto가 필요하다
models에
auto.js 를 하나 만들어줘서 코드를 넣어준다.
const SequelizeAuto = require('sequelize-auto');
const auto = new SequelizeAuto('nodejs', 'root', 'qwer1234', {
host: 'localhost',
port: '3306',
dialect: 'mysql',
})
auto.run(err => {
if (err) throw err;
console.log('comple');
})
시퀄라이즈 오토를 써서
즉 내 DB에 있는 테이블이 자바스크립터에서 생성 되서 맵핑을 해주는 것임
모델은 틀 같은 개념임
찾는걸 해보자
finall.js 파일 만들기
const initMoels = require('./models/init-models');
const Sequelize = require('sequelize');
const sequelize = new Sequelize('nodejs', 'root', 'qwer1234', {
host: 'localhost',
dialect: 'mysql'
})
const models = initMoels(sequelize);
models.users.findAll().then(results => {
console.log(results);
})
콜백으로 찾기
nodejs 에 있는 정보들아 전부나온다.
비슷하게 어싱크로 찾기
const initMoels = require('./models/init-models');
const Sequelize = require('sequelize');
const sequelize = new Sequelize('nodejs', 'root', 'qwer1234', {
host: 'localhost',
dialect: 'mysql'
})
const models = initMoels(sequelize);
// models.users.findAll().then(results => {
// console.log(results);
// })
async function findAllFromUsers() {
const results = await models.users.findAll();
console.log(results);
}
findAllFromUsers();
------
const initMoels = require('./models/init-models');
const Sequelize = require('sequelize');
const sequelize = new Sequelize('nodejs', 'root', 'qwer1234', {
host: 'localhost',
dialect: 'mysql'
})
const models = initMoels(sequelize);
이 부분 계속 스니깐 모듈로 만듦어줄것이다.
마이시퀄라이즈
const initMoels = require('./models/init-models');
const Sequelize = require('sequelize');
const sequelize = new Sequelize('nodejs', 'root', 'qwer1234', {
host: 'localhost',
dialect: 'mysql'
})
const models = initMoels(sequelize);
module.exports = {
models,
}
findall
const {models} = require('./mysequelize');
async function findAllFromUsers() {
const results = await models.users.findAll();
console.log(results);
}
findAllFromUsers();
그러면 findall 에서 models 를 계쏙 쓸 수있다 .
우리는 모델을 가져와야하는데 모듈로 만들엇따 .
----
Op 객체 안에는
ne -> != // 같지 않다면
같은 명령어가 들어 가 있다.
우리가 만든 시퀄라이즈에서 Op 를 넣어줘야한다
const initMoels = require('./models/init-models');
const { Op, Sequelize } = require('sequelize');
const sequelize = new Sequelize('nodejs', 'root', 'qwer1234', {
host: 'localhost',
dialect: 'mysql'
})
const models = initMoels(sequelize);
module.exports = {
models,
Op,
}
그럼 이제 마이시퀄라이즈 모듈에서 Op를 사용할 수 잇게된다.,
만약 프로덕트 테이블 이제 20000원 이상 애들을 찾기 위한 코드를 만들것이다.
const { Op, models } = require("./mysequelize");
// async function findAllFromUsers() {
// const users = await models.users.findAll({
// where: {
// maried: {
// [Op.gt]: 20000,
// },
// },
// });
// const json = JSON.stringify(users);
// console.log(json);
// }
//select * from products where price > 20000;
//https://velog.io/@cadenzah/sequelize-document-2
async function findAllFromProducts() {
const product = await models.products.findAll({
where: {
price: {
[Op.gt]: 20000,
},
},
});
const json = JSON.stringify(product);
console.log(json);
}
findAllFromProducts();
price가 20000이상인 애들을 찾는 것이다 .
Op 연산자
https://velog.io/@cadenzah/sequelize-document-2
사이트 참고하기
연습
나이가 30 이상이고, 결혼을 한 사람 찾기
const { Op, models } = require("./mysequelize");
async function findAllFromUsers() {
const users = await models.users.findAll({
where: {
maried: {
[Op.gt]: 0,
},
age: {
[Op.gte]: 30,
},
},
});
const json = JSON.stringify(users);
console.log(json);
}
//select * from products where price > 20000;
//https://velog.io/@cadenzah/sequelize-document-2
// async function findAllFromProducts() {
// const product = await models.products.findAll({
// where: {
// price: {
// [Op.gt]: 20000,
// },
// },
// });
// const json = JSON.stringify(product);
// console.log(json);
// }
findAllFromUsers();
결혼을 하고 나이가 30 이상인 사람들의 이름만 출력해보기
attributes: ["name"] 은 name만 가져오는 것
-----
app 에서 시퀄라이즈 (모듈로 만들어서)로 DB 데이터 가져와서 띄우기
const express = require('express');
const app = express();
const { Op, models } = require("./mysemodule");
async function findAllFromUsers() {
const results = await models.users.findAll();
const json = JSON.stringify(results);
return json;
}
app.get("/users/all", async (req, res) => {
const text = await findAllFromUsers();
res.send(text);
})
app.listen(3000, () => {
console.log("sever 3000 start");
})
async function findAllFromUsers() {
const results = await models.users.findAll();
const json = JSON.stringify(results);
return json;
}
return json 를 해준다.
app.get("/users/all", async (req, res) => {
const text = await findAllFromUsers();
res.send(text);
})
findAllFromUsers(); 가 async 이기 때문에
(req, res) 앞에 async 를 붙여주고.
findAllFromUsers() 앞에 await를 붙여줘야한다.
'Unity > 서버' 카테고리의 다른 글
0618_서버 (GPGS 앱 올리기 2) (0) | 2021.06.18 |
---|---|
0617_ 서버 (GPGS 구글플레이에 앱 올리기 ) (0) | 2021.06.17 |
0615_서버 (DB_2) (0) | 2021.06.15 |
0611 _ 서버 (DB_1) (0) | 2021.06.11 |
0610 _ 서버 (0) | 2021.06.10 |