1.instagram-backend setup mkdir insta cd insta npm init -y code . Vscode 에서 extension으로 가서 gitignore command palette에서
prisma.iohttps://www.prisma.io/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-node-postgresnpm install prisma -D ??npm
npm i dotenvin server.jsrequire('dotenv').config()use : const PORT=process.env.PORThttps://www.graphql-tools.com/docs/schema-merginghttps://
createAccount.typeDefs.jscreateAccount.resolvers.jsnpm i bcryptjs를 통해 암호화 library setuproot 는 '\_' 로 넣고, arg에 username, email, passowrd 받음.existingUse
login.typeDefs.jslogin.resolvers.jsnpm i jsonwebtokenarg로 usename, password 받은다음 username으로 user가 존재하는 찾음.user가 존재하면 error~passwordOk를 만들어서 bcrypt.com
login mutation으로 return한 token으로 getUser즉, getuser 함수로 user를 return 해 준다.await jwt.verify(token, process.env.SECRET_KEY) 를 통해 user의 id를 확인.await prism
scalar Upload 를 만들어서 Upload Type을 만듬avatar 이미지 파일의 type을 Upload로 설정함.fs 는 fileSystem node에서 파일 관리하는 library임.avatar의 type을 Upload로 확인할 것.맨 밑의 Add fil
followers User\[] @relation("FollowRelation", references:id)following User\[] @relation("FollowRelation", references:id)를 schema.prisma model User에 넣
별거 없음
Query seeFollowers에 args로 username, page를 받음.result로 totalPage, followers:User 배열로 받음.!!!check page와 totalPage 중요!!! pagination을 위해서 그럼
나중에 react-native 들어갔을때 이어서 할것임.
\-->DB를 건덜이지 않으면서 data를 control하기도 하고, function을 실행하기도 함.users.typeDefs.jstotalFollowers, totalFollowing, isMe, isFollowing는 Model User에는 포함되어 있지 않음.하
check!!! relation,
별거 없음.. file은 나중에 S3에 사진 올리고url을 반환받을 예정. caption은 사진에 대한 설명.return은 일단 Photo인데, 나중에 바뀔 수 있음.checkPoint!!1\. caption에서 hashtag를 뽑아내는방법( I love photo
사진 id입력하면 사진을 return함.check!!Query는 async, await 가 사용되지 않음.사진 1장 찾는 것.
seeHashtag.typedefs.jsseeHashtag.resolvers.jsseeHashtag의 return이 Hashtag여서 의아해 할 수 있지만.Hashtag안에 photo\[]이 들어가 있음.나중에 computed Field에서 확인 바람..
caption에서 hashtag를 뽑아내서 createOrCreate에 바로 넣어줄 수 있는 component
1. toggleLike.typeDefs.js ~ 2. toggleLike.resolvers.js ~
User를 배열으로 return함.photo에 like를 누른 사람들을 보는 Query임.
loggedInUser와 User의 Following 한 user들의 사진을최신 순으로 보여줌. Photo로\~~args에 \_\_ 밑의 줄 2개임. check할것!!!!
DB에는 없지만, graphql상에서는 존재, DB는 터치하지 않고, data를 manage함.
check!!1\. model Comment 확인!!2\. model User와 model Photo에서 Comment와의 relation확인할 것check!! photoId를 arg로 받는 거 확인할 것!!!payload는 댓글 내용!!check!!await pri
크게 어려운건 없지만, 머리가 나쁘니 한번씩 코드 읽어 봅시다~
1. seePhotoComment.typeDefs.js ~ 2. seePhotoComment.resolvers.js ~
1. deletePhoto.typeDefs.js ~ 2.deletePhoto.resolvers.js ~
Mutation은 return 을 ok, error로 지정할 수 있고또한, mutation은 protectedResolver로 보호할 수 있으나.Query는 그렇지 않아서 info를 사용해서 query일때 , 대응 방법을 알아봄
1\.aws에 로그인 한 후, 검색에서 IAM을 타이핑하고 IAM 클릭2\.사용자(3)를 클릭함.3\.사용자 추가를 누름4\.사용자 이름을 타이핑하고 액세스키 방식을 체크하고 다음으로 넘어감5\.기존 정책 직접연결을 클릭하고 검색창에 S3를 타이핑하고 AmazonS3F
shared/shared. resolvers.jseditProfile.typeDefs.jsuploadPhoto.typeDefs.js
backend에서 가장 어려운 부분이니 집중 또 집중, 복습 또 복습 하자이렇게 통으로 올리는 이유는 model들 간의 relation을 확인하라고~schema.prisma와 비교해 가면서 Message와 Room 확인바람.computed Filed를 미이 만들어 놓은
나한테 DM을 보내게 되면 채팅방이 자동적으로 만들어짐. 자동적으로 만들어진 채팅방들을 보는 Fn
다른 채팅어플과는 달리 여기서는 상대방에게 message를 보내면 자동적으로 Room이 생성됨roomId와 userId는 required가 아니기 떄문에 ! 를 생략함.
카독이나 문자에서 읽으면 1표시가 사라지는 거나, 않읽은 message가 몇개 있고 ,고런걸 표시하는 Fnmessage의 id를 args로 받음.findUnique: 하나만 있는것, ex)id, where에도 하나만 붙음.findFirst: where속성에 id뿐만 아
채팅방안에 들어가 있는 상태, 메세지와 상대방들을 보는FN 1. seeRoom.typeDefs.js ~ 2. seeRoom.resolvers.js ~ roomId와 룸의 users안에 loggendInUser.id가 있는 걸로 room을 찾음
backend에서 가장 어려운 부분, 중요한 부분, update가 자주 일어나는 부분.고래도 할 수 있다!!!!! 항상, 공식문서를 참고할것.!!! https://www.apollographql.com/docs/apollo-server/data/subscrip
wsServer는 위에서 server.js에서 setUp을 마쳤고, 이제 resolver에서 실제로 구현을 해 봄!! https://www.apollographql.com/docs/apollo-server/data/subscriptions/npm install
첫번째로 subscription의 server를 만들었고, 두번째로 subscription의subscribe부분을 만들었고, 세번쨰로 publish부분을 만들어 봄참고로 publish는 sendMessage.resolvers.js에서 구현함.
playGround에서 subscribe를 어떻게 실행시키는지를 다룸.playGround에서 connection setting(회색바탕의 기계아이콘) 들어가서,Subscriptions의 주소(ws://localhost:4000/graphql)확인하고,Implementa