[Prisma] seeFeed Mutation

Review/백엔드 - 인스타그램 클론

[Prisma] seeFeed Mutation

조커린 2020. 2. 17. 05:38

내가 팔로우 하는 사람들의 Posts 만 모아서 시간별로 가져오고 싶다.

 

seeFeed.graphql

1
2
3
type Query {
    seeFeed: [Post!]!
}
cs

 

프리즈마 서버에 접속해 쿼리를 확인해보고 following 하는 사람들 배열을 어케 써먹을 수 있는지 보기루함

posts 의 user id부분을 여러 개가 해당하는 것을 불러와야 하는데 

id_in 이 배열을 불러와서 해당하는 값에 맞는 것을 찾아주는 것임을 확인했다.

이렇게 배열만 넣어주면 쉽게 해당하는 값을 전부 볼 수 있다. 

 

order_by 에 의해서 내림차순으로 불러올 수 있는 기능도 확인하여 같이 쓰기로 함. orderBy의 위치는 where과 동일 위치에 넣어주면 됨

 

 

seeFeed.js

 

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
import {prisma} from "../../../../generated/prisma-client";
 
export default {
    Query :{
        seeFeed:async(_,__, {request, isAuthenticated }) => {
            isAuthenticated(request);
            const { user } = request;
            //우리가 팔로우 하는 사람들
            const following = await prisma.user({id:user.id}).following();
            // following 을 가져오면 id 값만 찍을 수 있는 상태임 following [User] array임
            // console.log(following.map(x => x.id))
 
            return prisma.posts({
                where:{
                    user:{
                        //following 배열에서 id 값만 뽑아서 추출해내고 나의 id를 push
                        // id_in:following.map(x => x.id).push(user.id) 이렇게 하려고 했는데 안되가꼬 바꿈
                        id_in: [...following.map(x => x.id), user.id]
                    }
                },
                // orderBy:'createdAt_DESC'
            });
        }
    }
}
cs

following은 팔로우 하는 사람의 데이터 목록임

.map으로 id 만 추출해서 가져옴

(이게 리액트 포문인 줄 알았는데 특정 값 뽑아서 다시 배열로 갖고 오는 건데

선생님이 user라는 변수를 사용해서 user => user.id 이렇게 해서 내부에서 id 를 갖고 오는 건지 모르고 혼자 헷갈리다가 변수바꿨더니 들어가지길래 바꿔넣어서  헷갈리는 거 방지했다...)

 

맨날 ...하고 값 넣는 거 잘 몰라서 헷갈렸는데 이게 알 것 같음 느낌(만 들었다 ㅠㅠ)

그리고 배열뒤에 나의 id 도 추가하여 내가 쓴 Post도 확인하기!

 

 

로컬 서버에서 확인하면 잘 나오고 있다ㅎㅎ