드디어 Prisma 란 것을 알아보는 시간을 가져보겠다!
우선 Prsima 는 ORM 이다!
즉, SQL 코드를 쓸 필요 없이 자바스크립트 코드를 작성하면 Prisma 가 데이터베이스와 소통해준다.
지원해주는 언어는 자바스크립트와 타입스크립트가 존재한다.
출처 : https://www.prisma.io/docs/concepts/components/prisma-schema
client 를 통해서 자바스크립트로 데이터베이스와 대화할 수 있게 된다!
우선, 먼처 Prisma cli 를 설치해준다.
$ npm install prisma -D
다음에 밑에 있는 커맨드를 실행시켜준다.
$ npx prisma init
둘 다 끝냈으면, 우리 프로젝트로 가보면...
prisma 라는 폴더가 생성되었다.
그리고 schema.prisma 라는 파일이 만들어졌다.
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
말했듯이 Prisma 는 데이터베이스와 소통해준다.
위의 코드 경우 이미 sqlite 데이터베이스와 대화하도록 설정되어있다.
그리고 DATABASE_URL 이라는 환경 변수를 읽어내도록 설정되었다.
우리의 프로젝트를 자세히 보면, .env 라는 파일이 같이 생성되었다.
.env 에는 DATABASE_URL 환경 파일이 있다!
종합해보면 schema.prisma 는 .env 파일을 읽고, 해당 파일의 DATABASE_URL 를 가져 오는 것을 볼 수 있다.
왜 Prisma 는 이렇게 행동할까?
그 이유는 .env 파일은 다른 파일들에 비해 투명하다.
왜냐면 .gitignore 파일을 보면 .env 가 포함되어 있다.
// .env 부분만 가져온 것 이다
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
우린 환경 변수를 GitHub 이나 우리의 코드에 업로드하고 싶지 않아서이다.
.env 는 컴퓨터를 위한 것이다.
우린 코드나 schema.prisma 를 실제 데이터베이스 주소와 함께 업로드하고 싶지 않다.
왜냐면 이 주소를 누군가가 알게 되면 큰일난다!!!
안에는 이러한 정보들이 들어있다.
약간 비트코인의 프라이빗 키와 비슷한 면이 있다.
Prisma 는 이미 보안에 대해 신경 쓰도록 설정되어 있다.
우리의 schema.prisma 코드를 보면...
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
provider 가 PostgreSQL 를 사용해서 클라이언트와 데이터 소스를 생성해 줄 거다.
그럼 이제 PostgreSQL 에 대해 알아보자!
Mac 이면 postgres app 를 설치해야 한다.
윈도우면 pgadmin 4를 설치해야 한다.
링크 : https://www.pgadmin.org/download/pgadmin-4-windows/
pgadmin 은 윈도우와 PostgreSQL 을 위한 GUI 이다.
우선, postgresql 윈도우 를 설치해준다.
https://get.enterprisedb.com/postgresql/postgresql-11.2-1-windows-x64.exe
(다른 버전들로 설치하면 오류가 나서, 위의 버전으로 설치하고 실행하면 되긴 한다...)
설치 단계가 어렵긴 한데, 차근차근 읽어보고 완료되면...
컴퓨터 검색창에 pgadmin 4 라고 치고 클릭해준다.
그러면 밑에처럼 페이지가 나타난다.
왼쪽에 Servers 를 클릭해서 설치 단계에서 지정해둔 비밀번호로 들어가보면...
이렇게 나타난다!
그리고 Databases 를 오른쪽 마우스 클릭해서 Create -> Database 를 해준다.
데이터베이스 이름을 instaclone (프로젝트 이름과 동일하게 지정해둔다)
그리고 중요한 점!
위에를 보면 Owner 를 무조건 알아야 한다. (나중에 쓸 일이 있다.)
다음으로 VS code 로 가서...
.env 파일로 이동하면...
johndoe 대신 Owner 에서 지정해둔 우리의 이름을 써준다.
우리의 DATABSE_URL 에서 randompassword 라고 하는데, PostgreSQL 은 아무런 비밀번호 없이도 연결할 수 있도록 지원해준다.
localhost:5432 로 놔두고, /mydb 는 우리의 데이터베이스명으로 수정해야 한다.
우리 같은 경우에는 instaclone 로 바꾸면 된다.
끝으로 :