내가 팔로우 하는 사람들의 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도 확인하기!
로컬 서버에서 확인하면 잘 나오고 있다ㅎㅎ
'Review > 백엔드 - 인스타그램 클론' 카테고리의 다른 글
[Prisma] Subscription (0) | 2020.02.19 |
---|---|
[Prisma] 메시지 보내기 (0) | 2020.02.18 |
[Prisma] @relation onDelete 정의 (0) | 2020.02.17 |
[Prisma & GraphQL] enum 으로 기능 확장해 사용하기 (0) | 2020.02.17 |
[Prisma] _some, _every, _none, follow 여부 검사 (0) | 2020.02.15 |