gengminy
갱미니의 코딩일지
gengminy
전체 방문자
오늘
어제
  • 분류 전체보기 (61)
    • 🚀 프로젝트 (16)
      • 🎸 고스락 티켓 (4)
      • 🌞 내친소 (5)
      • 🥁 두둥 (7)
    • 📡 백엔드 (31)
      • 🌱 Spring Boot (13)
      • 🐱 Nest.js (10)
      • ⭐ Node.js (8)
    • 🏭 Infra (11)
      • ⚙ 준비를 위한 준비 (2)
      • 🥑 AWS (3)
      • 🐳 Docker (3)
      • ⚡ Github Actions (3)
    • 🌊 프론트엔드 (1)
      • 🌌 React.js (1)
    • 😎 주저리 (2)

블로그 메뉴

  • 💻Github
  • 📸Instagram
  • ✨Blog

공지사항

인기 글

태그

  • 스프링부트
  • springboot
  • OAuth
  • nestjs
  • nodejs
  • docker
  • oauth2
  • GithubActions
  • nest
  • 깃헙액션
  • Spring
  • github
  • 도커
  • 네스트
  • SlackAPI
  • JSON
  • 스프링
  • AWS
  • JWT
  • 슬랙알림

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
gengminy

갱미니의 코딩일지

📡 백엔드/⭐ Node.js

[Nodejs] Sequelize 로 SQL 쿼리 사용하기

2022. 5. 21. 01:51

✅ CRUD 작업 시작하기

Sequelize 로 받는 쿼리는 프로미스를 반환하기 때문에

.then 을 붙여 결괏값을 받을 수 있다

async/await 문법도 사용할 수 있다

 

 

✅ Create

// INSERT INTO nodejs.users (email, nick, password, ...)
// VALUES ('gengminy@gengminy.com', 'gengminy', '1234', ...);
const { User } = require('../models');
User.create({
    email: 'gengminy@gengminy.com',
    nick: 'gengminy',
    password: '1234',
    ...
});

models 모듈에서 User 모델을 불러와 create 메소드를 사용한다

데이터는 MySQL 자료형이 아닌

Sequelize 모델에 정의한 자료형으로 넣어주어야 한다

 

 

✅ Read (SELECT)

// SELECT * FROM nodejs.users;
User.findAll({});

// SELECT * FROM nodejs.users LIMIT 1;
User.findOne({});

// SELECT email, nick FROM nodejs.users;
User.findAll({
    attributes: ['email', 'nick'],
});

// SELECT nick, age FROM nodejs.users WHERE nick='gengminy' AND age > 20;
User.findAll({
    attributes: ['nick', 'age'],
    where: {
        nick: 'gengminy',
        age: { [Op.gt]: 20 },
    }
});

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

WHERE, ORDER 등의 조건 처리는 인수로 넣어주면 된다

 

 

✅ Update

// UPDATE nodejs.users SET nick = 'geng' WHERE id = 2';
User.update({
    nick: 'gengminy',
},{
   where: { id: 2 },
});

첫 번째 인수로 수정할 내용, 두 번째 인수로 어떤 로우를 수정할지 지정한다

 

 

✅ Delete

// DELETE FROM nodejs.users WHERE id = 2;
User.destroy({
    where: { id: 2 },
});

where 옵션에 삭제할 조건들을 적는다

 

 

✅ 관계 쿼리 (JOIN)

const user = await User.findOne({
    include: [{
        model: Post,
    }]
});

const posts = await user.getPosts();

특정 사용자를 사져오면서 그 사람의 게시글까지 모두 가져올 때

include 속성을 사용한다

이후 동사 뒤에 모델 이름이 붙는 형식으로 메소드를 사용할 수 있다

getPosts(조회)

setPost(수정)

addPost(하나 생성)

addPosts(여러 개 생성)

removePosts(삭제)

 

db.User.hasMany(db.Post, { foreignKey: 'writer', sourceKey: 'id', as: 'Ans' });

관계를 설정할 때 as 옵션을 사용하면 동사 뒤의 모델명을 바꿀 수 있다

getAnss(조회)

setAns(수정)

addAns(하나 생성)

addAnss(여러 개 생성)

removePosts(삭제)

 

 

✅ 직접 쿼리 보내기

const [result, metadata] = await sequelize.query('SELECT * from users');

Sequelize 쿼리로 보낼 수 없는 경우에 직접 SQL 문으로도 쿼리할 수 있다

 

 

저작자표시 (새창열림)

'📡 백엔드 > ⭐ Node.js' 카테고리의 다른 글

[Nodejs] passport 모듈로 로컬 로그인 전략 구현하기  (0) 2022.05.24
[Nodejs] Sequelize 로 SQL 데이터베이스 연동하기  (0) 2022.05.21
[Nodejs] Router 객체로 라우팅 파일 분리  (0) 2022.05.17
[Nodejs] 미들웨어의 사용과 자주 쓰이는 미들웨어  (0) 2022.05.16
[Nodejs] express 서버 열기  (0) 2022.05.15
    '📡 백엔드/⭐ Node.js' 카테고리의 다른 글
    • [Nodejs] passport 모듈로 로컬 로그인 전략 구현하기
    • [Nodejs] Sequelize 로 SQL 데이터베이스 연동하기
    • [Nodejs] Router 객체로 라우팅 파일 분리
    • [Nodejs] 미들웨어의 사용과 자주 쓰이는 미들웨어
    gengminy
    gengminy
    코딩

    티스토리툴바