더북(TheBook)

age 부분이 조금 특이한데요. 시퀄라이즈는 자바스크립트 객체를 사용해서 쿼리를 생성해야 하므로 Op.gt 같은 특수한 연산자들이 사용됩니다. Sequelize 객체 내부의 Op 객체를 불러와 사용합니다. { [Op.gt]: 30 }은 ES2015 문법이니 2.1.3절을 참고하길 바랍니다.

자주 쓰이는 연산자로는 Op.gt(초과), Op.gte(이상), Op.lt(미만), Op.lte(이하), Op.ne(같지 않음), Op.or(또는), Op.in(배열 요소 중 하나), Op.notIn(배열 요소와 모두 다름) 등이 있습니다.

Op.or를 한번 사용해봅시다.

SELECT id, name FROM users WHERE married = 0 OR age > 30;
const { Op } = require('sequelize');
const { User } = require('../models');
User.findAll({
  attributes: ['id', 'name'],
  where: {
    [Op.or]: [{ married: false0 }, { age: { [Op.gt]: 30 } }],
  },
});

Op.or 속성에 OR 연산을 적용할 쿼리들을 배열로 나열하면 됩니다.

SELECT id, name FROM users ORDER BY age DESC;
User.findAll({
  attributes: ['id', 'name'],
  order: [['age', 'DESC']],
});

시퀄라이즈의 정렬 방식입니다. order 옵션으로 가능합니다. 배열 안에 배열이 있다는 점에 주의하세요. 정렬은 꼭 컬럼 하나로만 하는 게 아니라 컬럼 두 개 이상으로 할 수도 있기 때문입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.