티스토리 뷰
안녕하세요 강정호 입니다
오늘은 좋아요 API를 마무리 하고, 댓글 추가 기능을 만들어보겠습니다.
toggleLike.js
import { isAuthenticated } from "../../../middlewares";
import { prisma } from "../../../../generated/prisma-client";
export default {
Mutation: {
toggleLike: async (_, args, { request }) => {
isAuthenticated(request);
const { postId } = args;
const { user } = request;
const filterOptions = {
AND: [
{
user: {
id: user.id
}
},
{
post: {
id: postId
}
}
]
};
try {
const existingLike = await prisma.$exists.like(filterOptions);
if (existingLike) {
await prisma.deleteManyLikes(filterOptions);
} else {
await prisma.createLike({
user: {
connect: {
id: user.id
}
},
post: {
connect: {
id: postId
}
}
});
}
return true;
} catch {
return false;
}
}
}
};
특정 유저가 해당 글에 대해서 좋아요를 누른적이 없다면, 좋아요를 create 해주고
좋아요를 누른 기록이 있다면 좋아요를 지우는 코드입니다.
핵심!!
deleteManyLikes 함수
: deleteMany는 조건에 맞는 데이터를 여러건 지우는데에 사용하는 함수이다.
왜 강의에서 deleteLike가 아닌 deleteManyLikes를 사용한지는 잘 모르겠다.
어차피 포스트ID, 유저ID가 있기 때문에 해당하는 1건의 좋아요만 삭제가 될 것이긴 하지만 굳이 deleteMany를 사용한 이유는 잘 모르겠다.
addComment.graphql
type Mutation {
addComment(text: String!, postId: String!): Comment!
}
Comment를 추가할 때는 text와 포스트ID를 입력해야 한다. 그리고 return 값으로 Comment 객체를 리턴한다.
addComment.js
import { isAuthenticated } from "../../../middlewares";
import { prisma } from "../../../../generated/prisma-client";
export default {
Mutation: {
addComment: async (_, args, {request}) => {
isAuthenticated(request);
const { text, postId } = args;
const { user } = request;
const comment = await prisma.createComment({
user: {
connect: {
id: user.id
}
},
post: {
connect: {
id: postId
}
},
text
});
return comment;
}
}
}
Comment를 생성할 때는 userId, postId, text를 사용합니다.
userId는 request 객체(인증시에 생성)에서 가져오고, text와 postId는 입력된 값을 가져 온다.
테스트
결과
'프로젝트' 카테고리의 다른 글
[인스타그램 클론코딩] #3.11 follow unfollow Resolver (0) | 2020.09.08 |
---|---|
[인스타그램 클론코딩] #3.10 searchUser and searchPost resolver (0) | 2020.09.08 |
[인스타그램 클론코딩] #3.8 toggleLike Resolver Part one (0) | 2020.09.07 |
[인스타그램 클론코딩] #3.7 Jwt 토큰 사용하기 (0) | 2020.09.07 |
[인스타그램 클론코딩] #3.5 Passport JWT part one (0) | 2020.08.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- docker
- 깃허브
- 유즈케이스
- GIT
- 항해플러스후기
- Spring boot
- 항해플러스백엔드
- 열반스쿨기초반
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- push_back
- 2023년
- 개발자 회고
- 폭포수
- 인셉션
- 재테크공부
- Inception
- 월급쟁이부자들
- 깃
- front
- 부동산공부
- 파라메터
- resize
- github
- pop_back
- 관계대수
- 항해솔직후기
- 내년은 빡세게!!
- 월부닷컴
- Use case
- 도커
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함