데이터베이스를 구성하기는 했는데 그걸 어떻게 연결시켜서 어떻게 활용해주나 싶었는데
그것을 가능하게 해주는것이 Prisma 이다.
node.js 환경에서 데이터베이스에 접근을 쉽게하도록 도와주는 소프트웨어이다.
npm install prisma --save-dev
npm install @prisma/client --save
// prisma를 설치해서 sequelize 와 함께 mysql을 사용할 수 있다.
npm install dotenv -dev
// 환경 변수를 사용할수 있다.
npx prisma init // prisma 초기 세팅을 해준다.
그럼 prisma 폴더가 생기고 안에 schema.prisma 파일이 생성될것이다.
// prisma/schema.prisma
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
// .env
DATABASE_URL = "mysql://USERNAME:PASSWORD@localhost:3306/DATABASE_NAME"
위와 같이 데이터베이스를 연결시켜준다.
저렇게 연결시켜준뒤에 schema.prisma 파일에 데이터베이스의 테이블을 만들어줄 수 있다.
그 과정을 "모델을 만든다"라고 한다.
node.js 환경에서 작성한 코드를 데이터베이스의 데이터 형태로 변환 시키는 것을
migration 이라고한다.
model users {
id Int @id @default(autoincrement())
email String @unique
password String
created_at DateTime? @default(now())
updated_at DateTime?
deleted_at DateTime?
articles articles[]
comments comments[]
}
위와 같이 객체 형식으로 테이블의 컬럼을 구성할 수있다.
npx prisma migrate dev --name 마이그레이션이름
위의 명령어로 데이터베이스에 테이블을 생성할 수 있다.
node.js 환경에서 데이터베이스에 접근해서 테이블도 만들었는데
그러면 테이블의 데이터는 어떻게 접근(생성, 삭제 등)하나보자
prisma/client를 통해서 데이터 베이스에 접근한다.
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()
app.post('users/signup', async (req, res) => {
const createUser = await prisma.$query.Raw`
INSERT INTO users (email, password) VALUES (${email}, ${password});
`
}
간단하게 적었지만 prisma.$query.Raw 를 통해서 SQL 쿼리문을 작성해서 데이터베이스에 쿼리문과 똑같이 접근할 수 있다.