테이블 조회(findAll, findOne)
findAll
쿼리 결과를 배열 객체로 반환
조건에 맞는 데이터 전부를 배열로 반환한다.
const { User } = require('./models');
// 유저 테이블 안에 있는 모든 데이터를 가져옴
const user = User.findAll({})
// age가 20인 데이터들을 가져옴
const user = User.findAll({where:{age:20}})
findOne
쿼리 결과를 객체로 반환
조건에 맞는 데이터 하나만 객체로 반환한다.
const { User } = require('./models');
// 조건에 맞는 데이터 하나만 가져온다.
const user = User.findOne({})
// 이름이 jin인 데이터 하나만 가져온다.
const user = User.findOne({where:{name:jin})
조건조회(attributes, where, Op, order)
attributes : 옵션을 사용하여 원하는 컬럼(열)만 가져 올 수 있다.
where : 조건을 지정하여 원하는 데이터를 가져 올 수 있다.(기본적으로 조건은 and)
Op : 특수 연산자
order : 정렬(2차원 배열의 형태)
const { User } = require('./models');
const { Op } = require('sequelize');
const user = User.findAll(
{attributes:['name', 'age']},
{where:{
married:ture,
age:{[Op.gt]:30}
}
},
order:[['age':'DESC'], ['name':'ASC']],
)
// where은 married가 true이고, age가 30 초과인 데이터만 가져오는데
// OP.gt는 초과를 의미
// attributes는 가져올 데이터의 name과 age의 키와 값만 가져오게 설정한다.
// age를 기준으로 내림차순하고, 그 후에 name을 기준으로 오름차순으로 정렬한다.
특수연산자 Op
Op.gt : 초과
Op.gte : 이상
Op.lt : 미만
Op.lte : 이하
Op.ne : 같지 않음
Op.or : 또는
Op.in : 배열 요소 중 하나
Op.notIn : 배열 요소와 모두 다름
const { Op } = require('sequelize');
[Op.and]: [{a: 5}, {b: 6}] // (a = 5) AND (b = 6)
[Op.or]: [{a: 5}, {a: 6}] // (a = 5 OR a = 6)
[Op.gt]: 6, // > 6
[Op.gte]: 6, // >= 6
[Op.lt]: 10, // < 10
[Op.lte]: 10, // <= 10
[Op.ne]: 20, // != 20
[Op.eq]: 3, // = 3
[Op.is]: null // IS NULL
[Op.not]: true, // IS NOT TRUE
[Op.between]: [6, 10], // BETWEEN 6 AND 10
[Op.notBetween]: [11, 15], // NOT BETWEEN 11 AND 15
[Op.in]: [1, 2], // IN [1, 2]
[Op.notIn]: [1, 2], // NOT IN [1, 2]
[Op.like]: '%hat', // LIKE '%hat'
[Op.notLike]: '%hat' // NOT LIKE '%hat'
[Op.startsWith]: 'hat' // LIKE 'hat%'
[Op.endsWith]: 'hat' // LIKE '%hat'
[Op.substring]: 'hat' // LIKE '%hat%'
[Op.regexp]: '^[h|a|t]' // REGEXP/~ '^[h|a|t]' (MySQL/PG only)
[Op.notRegexp]: '^[h|a|t]' // NOT REGEXP/!~ '^[h|a|t]' (MySQL/PG only)
[Op.like]: { // LIKE ANY ARRAY['cat', 'hat'] - also works for iLike and notLike
[Op.any]: ['cat', 'hat']
}
[Op.gt]: { // > ALL (SELECT 1)
[Op.all]: literal('SELECT 1')
}
데이터 생성(create)
create
모델을 불러와 create으로 데이터 1개(로우)(행)을 생성한다.
const { User } = require('./models');
const user = User.create({
name: jin,
age: 28,
married: false,
comment: "hello"
})
데이터를 넣을 때 MySQL의 자료형이 아닌 시퀄라이즈 모델에 정의한 자료형대로 넣어야 한다.
데이터 수정(update)
update
첫번째 인자는 수정할 내용, 두번째 인자는 어떤 데이터를 수정할지에 대한 조건
const { User } = require('./models');
const user = User.update(
{married: true},
{where:{name: jin}}
)
// name이 jin인 데이터의 married를 true로 바꾼다.
데이터 삭제(destory)
destroy
데이터 삭제는 delete가 아닌 distroy를 사용
const { User } = require('./models');
const user = User.destroy({where:{name: jin}})
// name이 jin 인 데이터 삭제
const user = User.destroy({
where:{age: [Op.lte]: 20}
})
// age가 20 이하인 데이터 삭제
'coding > Node.js' 카테고리의 다른 글
nodemon (0) | 2022.08.04 |
---|---|
모듈(module), require(), IIFE (0) | 2022.08.03 |
package.json (0) | 2022.07.31 |
npm jsonwebtoken (0) | 2022.07.29 |
Express의 미들웨어 (0) | 2022.07.23 |