본문 바로가기

Javascript

Sequelize Query 란? 사용법

728x90
반응형
SMALL

Java를 쓰신 분이라면, JPA 에 접해보셨을 겁니다.

객체와 데이터베이스의 칼럼을 1:1 매칭하여,

객체로써 하여금 데이터를 조작할수있도록 하는 ORM 입니다.

 

JPA에서는 spring data jpa 라고해서, 개발자가 jpa를 더 편리하게 사용하게 해줄수있는 프레임워크가 있습니다.

spring data jpa에서 보면, 직접 SQL문을 날리지않고, 메소드로 간편하게 데이터에 접근하도록 해주는 몇 가지 메소드가 있습니다.

 

이처럼

 

Sequelize Query도 위에 설명한 것처럼 비슷 합니다.

Model 과 Sequelize 와 데이터베이스정보가 모두 연동이 되었다면, 이제 객체로 하여금 데이터를 조작 할수 있습니다.

물론 Sequelize Query 라고, Sequelize 에서 몇가지 기본적으로 제공해주는 쿼리가 있습니다.

 

INSERT

-create(values: Object, options: Object): 레코드 생성함수

-findOrCreate(options: Object): 조회 시 없으면 생성해주는 함수

-findCreateFind(options: Object): 조회 시 없으면 생성 후 조회하는 함수

-upsert(vales: Object, options: Object): 한 레코드만 인서트하거나 업데이트 해주는 함수

 

SELECT

-findOne(options: Object) : 하나만 조회하는 함수. find()와 동일

-findAll(options: Object) : 여러 개를 조회하는 함수

-findAndCountAll(findOptions: Object) : 조회 후 총 수 조회.

-findByPk(id: Number | String | Buffer, options: Object) : 프라이머리키로 조회하는 함수

-findCreateFind(options: Object) : 조회 시 없으면 생성 후 조회하는 함수

-findOrCreate(options: Object): 조회수 없으면 생성해주는 함수

 

 

 

UPDATE

-update(values: Object, options: Object) : 값을 업데이트 해주는 함수. 여러 레코드 가능

-upsert(values: Object, options: Object) : 한 레코드만 인서트하거나 업데이트해 주는 함수

 

 

 

DELETE

-destroy(options: Object) : 한 개나 여러 레코드를 삭제하는 함수

 

 

Sequelize SELECT Query함수의 Option

-attributes : 조회할 칼럼을 정하는 옵션.
-attributes안의 include : table없는 칼럼을 추가할 때 쓰는 옵션.
-where : 조회할 칼럼의 조건문을 정하는 옵션.
-include : foreignKey로 Outer Left Join하는 옵션.
-order : 정렬 옵션.
-limit : 조회하는 레코드의 개수를 정하는 옵션.
-offset : 몇 번째부터 조회할지 정하는 옵션.

 

 

 

쓰는 예시

#회원 가입 조회 API

const addUser = async (req, res) => {
    let info = {
      username: req.body.username,
      password: req.body.password,
    };
    const user = await User.create(info).catch((err) => console.log(err));
    res.status(200).send(user);
  };

 

 

#회원 전체 조회 API

  const getAllUsers = async (req, res) => {
    let users = await User.findAll({}).catch((err) => console.log(err));
    res.status(200).send(users);
  };

#해당 회원 삭제 API

  const deleteUser = async (req, res) => {
    let id = req.params.id;
    await User.destroy({ where: { id: id } }).catch((err) => console.log(err));
    res.status(200).send("User is deleted");
  };

#해당 회원 정보 수정 API

  const updateUser = async (req, res) => {
    let id = req.params.id;
    const user = await User.update(req.body, { where: { id: id } }).catch((err) =>
      console.log(err)
    );
    res.status(200).send(user);
  };

 

728x90
반응형
LIST