이번에는 앞에서 설정한 시퀄라이즈를 토대로 CRUD를 워크벤치나 MySql에서가 아니라 노드에서 하는 코드를 따로 적어보려고 합니다.
INSERT INTO nodejs.users (name, age, married, comment) VALUES ('zero', 24, 0, '자기소개1');
//MySql 쿼리
const { User } = require('../models');
User.create({
name: 'zero',
age: 24,
married: false,
comment: '자기소개',
});
//Sequelize로 대체
create함수를 사용해서 MySql에서 사용하는 INSERT INTO을 대체할수 있습니다. User가 미리 선언되어 있다는 가정하에 밑에서 코드를 적어보도록 하겠습니다.
SELECT * FROM nodejs.users;
User.findAll({});
SELECT * FROM nodejs.users LIMIT 1;
User.findOne({});
SELECT name, marreid FROM nodejs.users;
User.findAll({
attributes: ['name', 'married'],
})
findAll과 findOne은 이름에서 알 수 있 듯이 전체 검색과 단일 검색입니다. 그 중에서 findAll은 attributes를 통해서 어떤 column의 값을 가져올지 정할 수 있습니다.
SELECT name, age FROM nodejs.usres WHERE married = 1 AND age > 30;
const { Op } = require('sequelize');
const { User } = require('../models');
User.findAll({
attributes: ['name', 'age'],
where: {
married: 1,
age: { [Op.gt]: 30 },
},
});
SELECT id, name FROM users WHERE married =0 OR age > 30;
USER.findALL({
attributes: ['id', 'name'],
where: {
[Op.or]: [{ married: 0 }, { age: { [Op.gt]: 30} }],
},
});
시퀄라이즈에서는 Op라고 하는 특수한 연사자를 사용해서 사용할 수 있습니다.
Op.gt | 초과 |
Op.gte | 이상 |
Op.lt | 미만 |
Op.lte | 이하 |
Op.ne | 같지 않음 |
Op.or | 또는 |
Op.in | 배열 요소 중 하나 |
Op.notIn | 배열 요소와 모두 다름 |
위의 연산자들을 사용해서 쿼리 문을 대체 합니다. 이외에도 LIMIT 속성, offset 속성, JOIN과 비슷한 관계 쿼리등 다양하게 설정이 가능합니다.
나머지는 구현에서 하나씩 알아보겠습니다.
'공부 > Node.js' 카테고리의 다른 글
[Node.js] Node.js 교과서 중간 후기 (1) | 2020.08.25 |
---|---|
[Node.js] 시퀄라이즈 (2) (0) | 2020.08.24 |
[Node.js] 시퀄라이즈 (1) (0) | 2020.08.24 |
[Node.js] 넌적스 (0) | 2020.08.21 |
[Node.js] REST (2) | 2020.08.18 |