티스토리 뷰
안녕하세요 강정호입니다
이번 포스팅에서는 User와 Post를 검색하는 API를 Graphql과 Javascript로 만들어 보겠습니다.
searchUser.graphql
type Query {
searchUser(term: String!): [User!]!
}
User 조회 함수인 searchUser 함수는 term 이라는 String 타입의 매개변수를 필요로 합니다.
searchUser의 리턴 타입은 User 배열입니다.
searchUser.js
import { generateSecret, sendSecretMail } from "../../../utils";
import { prisma } from "../../../../generated/prisma-client";
export default {
Query : {
searchUser: async (_, args) =>
prisma.users({
where: {
OR: [
{userName_contains: args.term},
{firstName_contains: args.term},
{lastName_contains: args.term}
]
}})
}
}
오늘의 핵심 : contains
args 변수에는 입력한 문자열이 term이라는 변수에 할당되어 있습니다.
args.term이 userName 또는 firstName 또는 lastName과 일치하면 해당 User 데이터를 리턴해줍니다.
그럼 constains는 어떨때 사용하는 것일까요??
SQL문에서 LIKE와 동일한 역할을 합니다. args.term이 userName, firstName, lastName의 문자열과 패턴이 일치한다면 조회합니다.
(참고 API : www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/filtering)
테스트
jeongho 라는 firstName을 가진 모든 User 객체들이 배열로 리턴이 되었다.
포스팅 조회하기
searchPost.graphql
type Query {
searchPost(term: String!): [Post!]!
}
매개변수로 문자열을 입력하고, Post 객체 배열을 리턴합니다
searchPost.js
import { prisma } from "../../../../generated/prisma-client";
export default {
Query: {
searchPost: async (_, args) =>
prisma.posts({
where: {
OR: [
{location_starts_with: args.term},
{caption_starts_with: args.term}
]
}
})
}
};
Post에 location, caption에 args.term과 일치하는 문자열이 존재하면 Post를 조회합니다.
테스트
location에 Seoul이라고 입력된 Post 객체가 정상적으로 리턴되었습니다.
'프로젝트' 카테고리의 다른 글
[인스타그램 클론코딩] #3.12 editUser seeUser Resolver (0) | 2020.09.08 |
---|---|
[인스타그램 클론코딩] #3.11 follow unfollow Resolver (0) | 2020.09.08 |
[인스타그램 클론코딩] #3.9 toggleLike and addComment Resolver (0) | 2020.09.07 |
[인스타그램 클론코딩] #3.8 toggleLike Resolver Part one (0) | 2020.09.07 |
[인스타그램 클론코딩] #3.7 Jwt 토큰 사용하기 (0) | 2020.09.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 개발자 회고
- github
- pop_back
- 내년은 빡세게!!
- docker
- 인셉션
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 폭포수
- 항해솔직후기
- 재테크공부
- 월급쟁이부자들
- 관계대수
- Inception
- resize
- Spring boot
- push_back
- 부동산공부
- 열반스쿨기초반
- Use case
- 2023년
- 도커
- 항해플러스후기
- 깃허브
- 유즈케이스
- 월부닷컴
- 깃
- GIT
- 항해플러스백엔드
- front
- 파라메터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함