SQL에 직접 Query를 요청하는 것.
node.js 환경에서 쿼리를 요청하는 것을 말하는데
디비에 연결하고 테이블 생성 및 조회 등
디비와 상호작용을 해주는 것.
몽고디비 실습때와 비교되는 것은
몽고디비는 schema를 이용해
연결해주는 방식인데
Raw Query는 app.js 에서 SQL문으로
CREATE TABLE 을 만들고 테이블 생성 API를 작성하는 차이가 있다.
app.post("/api/tables/", async (req, res, next) => {
const { tableName } = req.body;
await connect.promise().query(`
CREATE TABLE ${tableName}
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
)`);
return res.status(201).json({ message: "테이블 생성에 성공하였습니다." });
});
이처럼 connect.promis().query()를 활용해
테입블과 컬럼을 생성할 수 있다.
app.get("/api/tables/", async (req, res, next) => {
const [tableList] = await connect.promise().query(`
SHOW TABLES
`);
const tableName = tableList.map((table) => Object.values(table)[0]);
return res.status(200).json({ tableList: tableName });
});
정답은 SHOW TABLES 또는 SELECT 문법의 조회 메소드는
반환값이 존재하기 때문이다. 즉 Raw Query를 이용해 조회된 결과값은
배열의 첫번째에 할당되어 배열 구조분해할당 문법을 이용한 것.
배열의 첫번째의 값만 tableList 변수에 할당한 것이라 볼 수 있다.
Prisma 라이브러리 설치하기
# yarn 프로젝트를 초기화합니다.
yarn init -y
# express, prisma, @prisma/client 라이브러리를 설치합니다.
yarn add express prisma @prisma/client
# nodemon 라이브러리를 DevDependency로 설치합니다.
yarn add -D nodemon
# 설치한 prisma를 초기화 하여, prisma를 사용할 수 있는 구조를 생성합니다.
npx prisma init
- 데이터베이스 URL
대여받은 RDS의 속성값을 입력해주면된다.
DATABASE_URL="mysql://root:aaaa4321@express-database.cr2wkyc04qhk.ap-northeast-2.rds.amazonaws.com:3306/prisma_crud"
이렇게 작성해주면된다.
- Prisma CLI 명령어
prisma db push
// 파일에 정의된 설정값을 실제 데이터베이스에 반영 하는것
prisma init
// prisma를 사용하기 위한 초기 설정 다른 init 명령어랑 똑같다.
prisma generate
// prisma Client를 생성하거나 업데이트 하는 것
// 구조 변경이 이뤄졌을때, 이 명렬어로 최신 상태 유지
prisma db pull
//현재 연결된 DB의 구조를 prisma.schema 파일로 가져오는 것
// 최신상태로 유지하기 가능
-> Prisma CLI 명령어를 자세히 알고 싶다면,,
https://www.prisma.io/docs/orm/reference/prisma-cli-reference#synopsis
오늘 Raw Query와 Prisma에 대해 배웠는데
이전에 몽구스를 쓸 때와 비교해보자면
살짝 더 복잡한 것 같다. 그래도 장점을 꼽자면
SQL문을 NODE.JS 환경에서 사용하니까
관리하기 용이하니 장점으로 다가오는 것 같다.
[TIL] 2024.01.29 게시판 프로젝트 (0) | 2024.01.29 |
---|---|
[TIL] 2024.01.26 JWT (1) | 2024.01.27 |
[TIL] 2024.01.24 SQL 제약 조건 (0) | 2024.01.24 |
[TIL] 2024.01.23 개인과제 코드 리뷰 (0) | 2024.01.23 |
[TIL] 2024.01.22 개인 과제 및 회고(수정) (0) | 2024.01.23 |