선택한 유저를 내가 follow 하고 있는지 아닌지 여부를 검사한다.
computed.js 내부의 resolver
데이터 모델은 따로 스키마에 작성해놓도록 함.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
isFollowing: async (parent, _, { request }) => {
const { user } = request;
const { id: parentId } = parent;
try {
return prisma.$exists.user({
AND: [
{
id: user.id
},
{
following_some: {
id: parentId
}
}
]
});
} catch {
return false;
}
},
|
cs |
일단 데이터를 불러오는 과정이므로 async await을 걸어주지 않으면 그 과정에서 계속 에러뜬다
async await 걸어주고...
try 문법내에서 저 유저가 있는 지 없는지 await 걸어서 변수에 담아서 true false 를 리턴했는데
그렇게 했더니 에러가 생겼다... try 문법 내에서 기다리는 동안 false 로 리턴된 값이 다시 변하지 않나...(?! ㅠㅠ 아직 잘 모르겠다 )
암튼 그렇게 하지 않고 바로 저 조건문을 리턴시킨다.
_some, _every, _none에 대한 정의 (니꼴라스 샘 댓글 발췌)
_some : 비교할 배열에 있는 값 중 하나 이상을 포함하는 객체를 찾는 것을 의미합니다.
_every : 모두를 포함하는 오브젝트
_none : 이들을 포함하지 않는 오브젝트
여기서 내가 following 하는 목록에서 선택된 아이디값이 맞는 것을 가져오면서 _some을 사용했다.
배열 내부에서 해당하는 데이터를 선택하는 문법이다.
'Review > 백엔드 - 인스타그램 클론' 카테고리의 다른 글
[Prisma] @relation onDelete 정의 (0) | 2020.02.17 |
---|---|
[Prisma & GraphQL] enum 으로 기능 확장해 사용하기 (0) | 2020.02.17 |
[Prisma] custom/computed field (0) | 2020.02.15 |
[prisma] connection, $fragment (0) | 2020.02.13 |
[Prisma] $exists (0) | 2020.02.11 |