Sequelize Query 란? 사용법
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);
};