본문 바로가기

공부/Node.js

[Node.js] 시퀄라이즈 (3)

이번에는 앞에서 설정한 시퀄라이즈를 토대로 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