This message was deleted.
# 질문
s
This message was deleted.
u
Copy code
// schema.graphql
type Query {
	list: ListConnection!
}
스키마에서 Query `list`가
ListConnection!
타입 이니, resolver에서도
Copy code
list: () => {
			return ListArr; // return List type
		}
ListConnection!
타입에 맞춰서 return 하셔야 합니다.
Copy code
pageInfo: PageInfo!
	edges: [ListEdge]
뭐 가령..
Copy code
list: () => {
           ...
			return { pageInfo, edges };
		}
이렇게...
u
schema과 resolver의 리턴 타입이 다르면 안되는군요. 감사합니다!
그렇다면
pageInfo
를 resolver의
Query.list()
대신
ListConnection.pageInfo()
에서 직접 구현할 수 있는 방법이 있을까요?
u
음 아마도 의도하신바가 pagination인 듯 한데
Copy code
list: async (...) => {
   const pageInfo = await buildPaginate(...);
   const edges = await findEdges(...);

   return { pageInfo, edges };
}
이런식으로 구현될 것 같은데 원하는 답이 맞으실런지 모르겠네요 ㅎ
u
아 Query 에서 pagination을 구현하셨네요 저는 schema 에서 Connection Interface를 만들어서 구현 했었는데 resolver에서 리턴 타입 맞추기가 까다롭더라구요 😞 동준님이 알려주신 방법을 보니 타입 맞추기에 훨씬 나아 보이네요~ 감사합니다 !!
Copy code
// schema.graphql

interface Connection {
  pageInfo: PageInfo!
  edges: [Edge]
}

type ListConnection implements Connection {
  pageInfo: PageInfo!
  edges: [ListEdge]
}
...

// resolver.ts

Const resolver = {
  Connection: {
    pageInfo: () => {}
  },
  ...
}
u
😉 사실 저는 TypeScript를 사용하고 있어서요. typegoose, graphql-compose-mongoose 를 사용하고 있습니다. 기본적인 find paginate 같은것들은 구현이 되어있어서 업무를 많이 줄여줍니다.
u
저도 타입스크립트 배우고 써보려고 하니 많이 어렵네요ㅠㅠ 😭 꿀 팁 감사합니다! 😄 그리고 코로나 조심하세요!! 😷
u
고맙습니다 😉
t
pageInfo는 first, last, after, before같은 connection arguments에 의존적이라서 Connection 타입 리졸버에서 하기 힘들거같아요 ㅠ 저는 요렇게 유틸 함수 만들어서 사용하고 있어요. 괜찮으시면 써보시면 좋을거같네요 ㅎㅎ https://github.com/tonyfromundefined/graphql-connection-resolver
3
u
오 참고하겠습니다!! 감사합니다. 🙂
👍 1