LIST - CTRL + F 로 검색해서 찾기
Git에서 프로젝트 풀링시 Prisma 설정파일인 .env 제외된 상태로 Pull
.env 파일에는 DATABASE_URL 같은 URL 정보가 들어가기 때문에 보안상의 이유로 gitignore에 등록됨
> 오늘은 URL를 하드코딩 하였는데 추후에 init 과 같은 작업이 가능한지 검색 필요
Exam ) .env
DATABASE_URL="postgresql://postgres:1111@localhost:5432/instaClone?schema=public"
SECRET_KEY=eyJhbGciOiJIUzI1NiJ9.eyJSb2xlIjoiQWRtaW4iLCJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkphdmFJblVzZSIsImV4cCI6MTYyNDE3ODA3MSwiaWF0IjoxNjI0MTc4MDcxfQ.w70O_coaafwfh9YD0kaL6ZOPUx_2YKJQQei2gpv00Hs
PORT=4000
Schema.prisma 내에 컬럼명 오타
Movie 테이블 내에 updatedAt 컬럼명을 updateAt으로 잘못 표기
-- AlterTable
ALTER TABLE "Movie" DROP COLUMN "updateAt",
ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL;
model Movie{
id Int @default(autoincrement())@id
title String
year Int
genre String? // Not Require => ?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
updateAt DateTime @updatedAt 로 작성되어 있던 컬럼명을 변경후에 다시 migrate 진행하였는데
생성되어 있는 컬럼명과 작성되어 있는 컬럼명의 차이로 리셋 후 다시 Create 할것인지 물어보는 내용..
(모든 데이터 날라감)
Git Push에 대한 룰
instaclone git main 브랜치에 밀기 전에 test 브랜치에 먼저 푸쉬후 문제 없을시 merge하는 방식으로 깃 이용하자.
(협업을 위한 깃 사용 방식 미리 학습하는 목적)
git remote add origin test
git add .
git commit -m ""
git push -u origin test
후에
git checkout main
git merge test
git push -u origin main
(이번 작업은 GIthub Desktop 툴을 이용해서 위 명령어가 되는진 모르겠다.)
Pagination
시스템에서 페이징을 구현할떄 사용할수 있는 유용한 기능이다.
https://www.prisma.io/docs/concepts/components/prisma-client/pagination
Offset pagination
skip - 건너뛸 Data 수
take - 가져올 Data 수
Offset pagoination으로 많은 데이터를 긁어올때...
Ex) skip : 200000 뒤에있는 take : 4 를 기져온다면 200000개의 DATA를 긁어와야함.
Cursor-based pagination
cursor를 사용하면 사용자가 마지막으로 요청한 cursor값에 해당하는 데이터부터 요청할수있다.
cursor값은 유니크한 값으로 저장할수 있으며 해당 에제에선 DATA의 id값을 기준으로 전달함.
cursor값의 해당하는 값부터 요청하기 때문에 중복을 방지하려면 skip 속성 값을 1로 주면 된다.
Prisma
Prisma 관련 참고사항
connect
connect - 새로 생성하는 record에 기존 레코드를 연결하는 방식 (Unique 필드여야함)
connectOrCreate
connectOrCreate - 기존 관련 레코드에 연결하거나 존재하지 않는다면 레코드를 새로 생성한다,
Prisma Client - Select와 include 차이점
Select Logic
export default {
Query:{
seePhotoLikes:async(_,{id})=>{
const photo = await client.like.findMany({
where:{photoId:id},
select:{
user:true //Select는 선택개념 Include는 추가개념
}
})
return photo.map(photo=>photo.user)
}
}
}
Selcet Result
include Logic
export default {
Query:{
seePhotoLikes:async(_,{id})=>{
const photo = await client.like.findMany({
where:{photoId:id},
include:{
user:true //Select는 선택개념 Include는 추가개념
}
})
console.log(photo)
return photo.map(photo=>photo.user)
}
}
}
include Result
단어 의미에서 알수 있듯이, Select는 선택개념, include는 추가개념
'Doing' 카테고리의 다른 글
[Prisma]relation 대한 onDelete 대안법 (1) | 2021.07.03 |
---|