✅ 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 |