[Prisma] _some, _every, _none, follow 여부 검사

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

[Prisma] _some, _every, _none, follow 여부 검사

조커린 2020. 2. 15. 20:31

 

선택한 유저를 내가 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을 사용했다.

배열 내부에서 해당하는 데이터를 선택하는 문법이다.