Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Bull
- 공룡게임
- MongoDB
- jest
- 정렬
- Python
- cookie
- JavaScript
- nodejs
- MySQL
- nestjs
- 게임
- game
- Queue
- dfs
- class
- Express
- AWS
- typeORM
- TypeScript
- mongoose
- flask
- react
- GIT
- 자료구조
- Dinosaur
- Nest.js
- Sequelize
- OCR
Archives
- Today
- Total
포시코딩
[Sequelize] SQL 쿼리(Raw Query) 그대로 사용하기 - Sequelize.query 본문
728x90
개요
반복되는 JOIN과 GROUP BY, 그리고 Sub Query까지 사용되고 있는 쿼리문을 만들었을 때
Sequelize를 통해 해당 데이터를 뽑아내야 한다면 막막할 것이다.
내가 그랬고, 그정도까지 Sequelize에 숙달되지도 않았고 매달릴 시간도 없어서
그냥 직접 MySQL과 연동하여 쿼리문 그대로 날리는 모듈을 만들어 사용할 생각을 하고 있었는데
혹시나 하는 마음에 검색해봤더니 Sequelize를 통해서도 쿼리문을 그대로 사용할 수 있었다.
사용 방법
const { QueryTypes } = require("sequelize");
const { sequelize } = require("../sequelize/models/index");
static findAll(userId) {
return new Promise(async (resolve, reject) => {
const query = `SELECT * FROM Likes WHERE userId = ?`;
await sequelize.query(query, {
type: QueryTypes.SELECT,
replacements: [userId],
})
// replacements를 통해 ?에 값을 넣을 수 있다. 안쓰고 걍 바로 쿼리문에 박아도 자유임
.then((result) => {
resolve(result);
}) // Promise 안에서 제어되는 값이기 때문에 then, catch를 통해 resolve, reject 처리해줬음
.catch((err) => {
reject(err);
});
});
};
}
쿼리문은 예시용으로 짧게 작성해놨고
사용하는 사람도 저런식으로 먼저 테스트할 짧은 쿼리문부터 해보며 적용하기를 추천한다.
도움받은 곳
728x90
'Node.js' 카테고리의 다른 글
객체지향(Object-Oriented) (0) | 2022.12.26 |
---|---|
Redis (0) | 2022.12.24 |
[Sequelize] createdAt, updatedAt 컬럼 없는 테이블 다루기 (0) | 2022.12.22 |
[Sequelize] migration을 이용한 Table 속성 변경 방법들 (0) | 2022.12.22 |
[Sequelize] 이미 생성한 테이블의 컬럼 속성 변경하기 (0) | 2022.12.22 |