
Redis - 메모리 에 저장하는 데이터베이스. 컴퓨터 전원이 꺼지면, 날라가. But 읽고 쓰기가 매우 빨라.
FireStore, MongoDB - 도큐먼트 기반
Redis - 값으로 JSON 도 넣을 수 있고 편하게 쓸 수 있음.
설치
npm i pg
npm i @types/pg
npm i typeorm
prisma
npm install bcrypt
npm i -D @types/bcrypt
$ npm install prisma @prisma/client
$ npx prisma init
> format document 에서 prisma 포멧 추가
사용
npx prisma migrate dev
2가지를 업데이트 해줌.(db 업데이트와, 타입)
npx prisma generate
타입만 업데이트 해주는것
스키마에 적혀있는 내용을 그대로 타입을 generate 해줌.
=> nodemodules 에 프리즈마 지우고 npx prisma generate 로 타입 다시 설정
프리즈마의 기능
1대1 1대 N , N:M
이 경우 N(User) or M(Post) 에 저장하는건 컬럼을 계속 추가해야하거나, 배열로 관리하는것. 매우 비효율적
중간에 별도의 테이블을 하나 만들어.(좋아요를 저장하는) 컬럼을 최소 두개만들어. (userId, postId)
프리즈마는 이 중간 테이블을 알아서 만들어줘.
// 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")
}
model User {
id Int @id @default(autoincrement())
email String @unique
encryptedPassword String
createdAt DateTime @default(now())
profile UserProfile? // 종이되는건 처음에 없어도 되서 ? 달아줌.
}
model UserProfile {
id Int @id @default(autoincrement())
nicckname String?
name String?
gender String?
age Int?
phoneNumber String?
address String?
user User @relation(fields: [userId], references: [id]) //종이되는 녀석에 주를 연결해주고. 주의 타입까지만 쓰면 자동으로 틀이 생겨.
userId Int @unique //1대1 관계로 확실하게 인식하려면 unique
}
오류 터져도 서버 살리기